C# System.Data.SqlClient.SqlException (0x80131904)C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 C# System.Data.SqlClient.SqlException (0x80131904)

Post by Anonymous »

Mit c# .net 4.6.1 habe ich ein Programm, mit dem ich versuche, eine MS SQL Server 2016-Datenbank abzufragen. Ich habe zwei Remote-Server, Server A und Server B. Mein C#-Programm läuft ohne Probleme auf Server A. Wenn ich das Programm auf Server B ausführe, erhalte ich die folgende Fehlermeldung:


System.Data.SqlClient.SqlException (0x80131904): A netzwerkbezogen oder beim Herstellen einer Verbindung zu
SQL Server ist ein instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass
der Instanzname korrekt ist und dass SQL Server so konfiguriert ist, dass er Remoteverbindungen zulässt. (Anbieter: Named P ipes Provider, Fehler:
40 – Verbindung zu SQL Server konnte nicht geöffnet werden) ---> Syste
m.ComponentModel.Win32Exception (0x80004005): Zugriff verweigert um
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdent
ity-Identität, SqlConnectionString ConnectionOptions, SqlCredential
Anmeldeinformationen, ObjektproviderInfo, String newPassword, SecureString
newSecurePassword, Boolean weitergeleitetUserInstance, SqlConnectionString
userConnectionOptions, SessionData r econnectSessionData,
DbConnectionPool-Pool, String accessToken, Boolean applyTra
nsientFaultHandling, SqlAuthenticationProviderManager
sqlAuthProviderManager) bei
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOp
tionsoptionen, DbConnectionPoolKey poolKey, Object
poolGroupProviderInfo, DbConnectionPool pool, DbConnection
owningConnection, DbConnectionOptions userOptions)

at
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConn
ectionPool pool, DbConnection owningObject, DbConnectionOptions
Optionen, DbConnectionPoolKey poolKey, DbConnectionOptions
userOptions) unter
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection
besitzendes Objekt, DbConnectionOptions userOptions, DbConnectionInternal
oldConnection) bei
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection
o wningObject , DbConnectionOptions userOptions, DbConnectionInternal
oldConnection ) at
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection
ow ningObject, UInt32 waitForMultipleObjectsTimeout, Boolean
allowCreate, Boolean o nlyOneCheckConnection, DbConnectionOptions
userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection
ownObject, TaskCompletionSource

Code: Select all

1 retry, DbConnectionOptions
userOptions, DbCon nectionInternal& connection)    at
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection
owningConnection, TaskCompletionSource
1 Wiederholung, DbConnectionOptions
userOptions , DbConnectionInternal oldConnection,
DbConnectionInternal& Verbindung) bei
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(Db
Verbindung äußereVerbindung, DbConnectionFactory VerbindungFactory,
TaskCompletio nSource

Code: Select all

1 retry, DbConnectionOptions userOptions)    at
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection
outerConnection, DbConnectionFactory connectionFactory,
TaskCompletionSource
1 Wiederholung, DbConnectionOptions userOptions) bei
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource

Code: Select all

1
re try)    at
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1
Wiederholung) bei System.Data.SqlClient.SqlConnection.Open() bei
YetAnotherSmallConsoleApp.Program.Main(String[] args) in
C:\Repository\Pro
jects\YetAnotherSmallConsoleApp\YetAnotherSmallConsoleApp\Program.cs:line
28 ClientConnectionId:00000000-0000-0000-0000-000000000000


Hier ist mein Programm:

Code: Select all

using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.IO;

namespace YetAnotherSmallConsoleApp
{
class Program
{
static void Main(string[] args)
{
SqlConnection con = new SqlConnection("Server = IP_ADDRESS; User Id = USER_NAME;  Password = PASSWORD;");
string[] arrExcludeLines = File.ReadAllLines(FILEPATH_TO_QUERY);
string strExcludeQuery = default(string);
foreach (string line in arrExcludeLines)
{
strExcludeQuery = strExcludeQuery + line + Environment.NewLine;
}
try
{
using (con)
{
con.Open();
SqlCommand cmdExclude = new SqlCommand(strExcludeQuery, con);
SqlDataReader dr1 = cmdExclude.ExecuteReader();
while (dr1.HasRows)
{
while (dr1.Read())
{
Console.WriteLine(dr1[0].ToString());
Console.ReadLine();
}
dr1.NextResult();
}
}
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
Console.ReadLine();
}
}
}
}
Der Fehler wird von der Zeile ausgegeben, die con.Open(); lautet. Hier ein paar Fakten zu den Servern:
  • Sowohl Server A als auch Server B befinden sich im selben Netzwerk, und dieses Netzwerk ist nicht
    Im selben Netzwerk befindet sich meine MS SQL Server 2016-Datenbank.
  • Auf Server A ist eine Instanz von MS SQL Server 2012 installiert, auf Server B ist
    kein MS SQL Server installiert darauf.
  • Auch wenn mein Das Programm läuft ordnungsgemäß auf Server A. Ich kann die IP-Adresse
    des MS SQL Server 2016-Datenbankservers weder von Server A noch von Server B aus anpingen.
  • Auf dem Server sind keine Firewalls vorhanden A oder Server B.
  • Auf Server A und Server B wird MS Server 2012 R2 ausgeführt.
Das sind die einzigen Dinge, die mir zum Vergleich einfallen Server A und Server B. Offensichtlich gibt es zwischen Server A und Server B einen Unterschied, der die erfolgreiche Ausführung des Programms auf Server A ermöglicht. Ich weiß nicht, ob auf Server A etwas anders konfiguriert ist, das auf Server B anders konfiguriert ist oder wenn auf meinem MS SQL Server 2016-Datenbankserver etwas konfiguriert ist, das es Server A ermöglicht, erfolgreich eine Verbindung zur Datenbank herzustellen, wenn das Programm ausgeführt wird, aber verhindert, dass das Programm eine Verbindung zur Datenbank herstellt und erfolgreich auf Server B ausgeführt wird. Wenn mir jemand etwas sagen könnte Irgendwelche Vorschläge zur Fehlerbehebung, um das Problem zu beheben Ich würde mich sehr darüber freuen, ein Programm auf Server B laufen zu lassen. Vielen Dank im Voraus.

BEARBEITEN: Wenn ich versuche, von Server B aus eine Verbindung zur MS SQL Server 2016-Datenbank herzustellen, verwende ich dieselben Anmeldeinformationen, die ich für die Verbindung zur Datenbank von Server A verwende Bei Verwendung von SSMS erhalte ich die folgende Fehlermeldung:

Image


BEARBEITEN: Noch etwas: Ich habe versucht, das Programm mit dem Computernamen für den MS SQL Server 2016-Datenbankserver in der Verbindungszeichenfolge sowie der tatsächlichen IP-Adresse für den Datenbankserver in der Verbindungszeichenfolge auszuführen , beide Möglichkeiten führen dazu, dass das Programm erfolgreich auf Server A ausgeführt werden kann, ich jedoch den Fehler auf Server B erhalte.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post