我有一个Windows域,其中一台机器运行SQL Server 2005,并配置为仅支持Windows身份验证.我想在同一网络上的计算机上运行C#客户端应用程序,但不在域上,并访问SQL Server 2005实例上的数据库.
我认为做这样的事情会很简单:
string connectionString = "Data Source=server;Initial Catalog=database;User Id=domain\user;Password=password";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
Run Code Online (Sandbox Code Playgroud)
但是,这失败了:客户端错误是:
System.Data.SqlClient.SqlException:用户'domain\user'登录失败,服务器端错误为:错误18456,严重级别14,状态5
我尝试了各种各样的事情,包括将集成安全性设置为true和false,以及\而不是用户ID中的\,但没有成功.
一般来说,我知道可以从非域计算机连接到SQL Server 2005实例(例如,我正在使用基于Linux的应用程序,很高兴这样做),但我似乎无法找出如何从Windows机器上做到这一点.
我想执行一个使用链接服务器作为特定用户的查询。但是,甚至没有一个简单的示例可以工作。
当我以用户“ domain \ user”的身份使用SSMS时,连接到“ serverA”并运行以下代码:
EXECUTE ('SELECT col FROM serverB.dbB.dbo.table')
Run Code Online (Sandbox Code Playgroud)
它工作正常。
但是,当我以用户“ domain \ admin”的身份使用SSMS时,请连接到“ serverA”并运行以下代码:
EXECUTE ('SELECT col FROM serverB.dbB.dbo.table') AS LOGIN = 'domain\user'
Run Code Online (Sandbox Code Playgroud)
它引发以下错误:
如果没有模拟登录名的映射,则无法在链接下使用链接服务器。
我已经搜索了很多,但是还没有找到任何解决方案。有人知道问题可能在哪里吗?