连接到另一个域中的SQL Server

时间:2014-12-15 22:26:06

标签: sql-server vb.net ado.net active-directory database-connection

我在另一个域中有一个SQL Server需要查询。我无法在网上找到类似于我试图做的任何事情,所以我来这里寻求帮助。通常情况下,我一直在使用Window的远程桌面连接登录到其他域,然后我将从远程计算机打开管理工作室并执行我的查询。

我想让代码执行没有图形界面的远程桌面连接。我只是希望我的代码远程进入其他域,执行查询并断开连接。这就是我所拥有的:

Private Sub btnConnect_Click(sender As System.Object, e As System.EventArgs) Handles btnConnect.Click
    Dim connectionString As String = "Server = 111.111.111.111; Initial Catalog = remote database; Network Library=DBMSSOCN; integrated security = true; User ID = domain2\mylogin; Password = myPass;"
    Dim connectionString2 As String = "Server = local SQL Server; Initial Catalog = local database; integrated security=true"

    Try
        Using sourceConnection As SqlConnection = _
        New SqlConnection(connectionString)

            Dim commandSourceData As SqlCommand = New SqlCommand( _
                                "SQL Query", sourceConnection)

            sourceConnection.Open()
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader()

            Using destinationConnection As SqlConnection = _
                New SqlConnection(connectionString2)
                destinationConnection.Open()
                Using bulkCopy As SqlBulkCopy = _
                    New SqlBulkCopy(destinationConnection)
                    bulkCopy.ColumnMappings.Add("Column1", "Column1")
                    bulkCopy.DestinationTableName = "local database"
                    bulkCopy.WriteToServer(reader)
                End Using
                destinationConnection.Close()
            End Using
            reader.Close()
            sourceConnection.Close()
        End Using
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

我收到以下错误:

enter image description here

是的,我的SQL Server配置为允许远程连接。

2 个答案:

答案 0 :(得分:1)

在你的连接字符串中:

Server = 111.111.111.111; Initial Catalog = remote database; Network Library=DBMSSOCN; integrated security = true; User ID = domain2\mylogin; Password = myPass;

您指定使用集成安全性提供无效的凭据。集成安全性始终使用当前登录的用户(或进程正在运行的用户)。

因此,要使用指定的凭据运行,您需要在远程服务器(111.111.111.111)上启用SQL安全性,然后创建一个具有remote database相应权限的SQL用户帐户。

然后相应地修改您的连接字符串:

Server = 111.111.111.111; Initial Catalog = remote database; Network Library=DBMSSOCN; User ID = SqlAccountName; Password = SqlAccountPW;

答案 1 :(得分:0)

虽然关于指定集成安全性和用户名的所有其他答案都是正确的,但我认为这不是您唯一的问题。从您得到的错误,无法找到服务器。您可以查看以下内容...
- 你能ping 111.111.111.111
- 远程服务器上是否有防火墙?并且已将其配置为允许SQL连接
- SQL Server浏览器服务是否已启动? - 是否在SQL Server网络配置中启用了TCP / IP协议

这是一个与你自己有同样错误的问题的答案,还有一些你可以检查的事情。

Connect to SQL Server through IP address

希望有所帮助