簡體   English   中英

.NET C#-無法訪問遠程計算機后面的SQL Server數據庫

[英].NET C# - Cannot access a SQL Server database behind remote machine

我具有訪問本地網絡(位於代理后面的網絡)中的服務器的憑據。 並且該服務器正在運行SQL Server 7.0數據庫。 數據庫配置為使用Windows身份驗證登錄。

我使用遠程桌面連接訪問服務器,放入憑據,然后在內部打開查詢分析器時,選擇使用Windows身份驗證登錄,然后查詢數據庫。

但是,現在我需要一個.NET C#程序來從我的機器遠程訪問數據庫。 我已經檢查了端口1433上的TCP / IP連接,並且它是打開的。 但是,使用以下代碼,我無法打開與遠程數據庫的連接。

SqlConnectionStringBuilder connStringBuilder = new SqlConnectionStringBuilder();
connStringBuilder["Trusted_Connection"] = false;
connStringBuilder["user id"] = "<domain>\\<user>";
connStringBuilder["password"] = "<pass>";
connStringBuilder["Database"] = "<db>";
connStringBuilder["Server"] = "\\\\<servername>\\MSSQLServer,1433";
connStringBuilder["Connection Timeout"] = "30";

SqlConnection myConn = new SqlConnection(connStringBuilder.ConnectionString);
try
{
    myConn.Open();
    // success
    Console.WriteLine("Connection Opened");
}
catch (Exception e)
{
    // failed
    Console.WriteLine("Connection Failed");
    Console.WriteLine(e.ToString());
}

建立連接后,servername字段與我在“遠程桌面連接”工具中輸入的文本相同,與用戶ID密碼字段相同(使用Windows Server 2000正常登錄)。

另外,使用SSMS(SQL Server Management Studio),我無法連接到實例,但是,使用Windows資源管理器,我可以使用\\\\ servername \\ e $瀏覽服務器的驅動器(例如)。

先感謝您!

編輯1

我相信問題在於通過遠程計算機登錄,但是我不知道該怎么做。 我在計算機上的本地數據庫上進行了測試,該程序的工作原理很吸引人。

以下是來自異常e的錯誤消息,在Trusted Connection上的天氣為truefalse

System.Data.SqlClient.SqlException: A network-related or instance-specific error
occurred while establishing a connection to SQL Server. The server was not found or
was not accessible. Verify that the instance name is correct and that SQL Server is
configured to allow remote connections. (provider: SQL Network Interface, error: 25 -
Connection string is not valid)
at .... etc

編輯2

我使用某些憑據登錄到計算機的步驟如下:

我首先在“ MACHINE33”中輸入服務器名稱(不帶引號)

遠程桌面連接

然后將憑據\\放在“ me \\ johndoe”中

訪問遠程計算機的憑據

最后,使用用於訪問計算機的Windows身份驗證來訪問數據庫。

如果使用集成身份驗證,則可信連接的值應為“ true”或“ sspi”,而不是false。 如果為“ true”,則您在連接字符串上指定的任何用戶ID和密碼都將被忽略,因此,如果您打算將憑據用於當前登錄的用戶(如果是網絡應用,則為AppPool用戶;或服務用戶(如果是Windows服務等)。

您正在使用命名的SQL Server實例嗎? 如果是這樣,則使用動態端口,而不是1433。您需要將SQL Server配置為對命名實例使用特定端口,或者不指定端口。

指定默認端口時,“用戶登錄失敗”

我今天早上問過系統管理員,他告訴我,即使在端口1433上有TCP / IP配置(在SQL Server 7.0的Server Network Utility中檢查), 也無法從外部訪問數據庫。 原因是整個網絡都位於一個代理后面,該代理檢查所有傳入的請求並阻止那些不是來自指定工具(例如,遠程桌面連接)的請求。

由於我想要的是將某些字段從舊數據庫的結構遷移到新系統使用的新字段,因此解決方案是:

訪問遠程計算機,創建數據庫備份,通過映射網絡驅動器訪問文件,將備份文件復制到您的計算機,創建本地數據庫並將備份還原到新的本地數據庫。

這不是最優雅的方式,而是唯一的方式。 作為建議,首先請問系統管理員,您是否處於一個充滿代理的網絡中,因為它可以為您省去很多麻煩。

謝謝,對不起,給您造成的麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM