我的一些工作代码目前位于我们的test服务器上,该服务器目前使用Integrated /连接到SQL服务器。
我需要将它部署到客户端服务器,它将被安排为每小时运行一次,不管用户是否登录。
由于用户可能没有登录,我假设集成安全性将无法工作。
我正在输入的凭据与用于连接到dev服务器的凭证相同。我已经尝试了两个域“组织\用户名”,但这也不起作用。
SqlConnection myConnection = new SqlConnection("User id=username;" + "Password=xxxxxx; + "Data Source=datasrc;" + "Initial Catalog=catalog; " + "connection timeout=30");
myConnection.Open();以上代码在运行myConnection.Open()之前不工作,并导致程序“挂起”。
但是,放置"Integrated Security=True;“和删除字符串的”用户id“和”密码“部分是可行的。
当我尝试使用"User id=name;" + "Password=xxxxxx;"时,它不工作,只是挂起。
下面是试图在SQLServer2014ManagementStudio上使用用户名和密码登录(windows身份验证工作正常)时的错误消息
“在建立到Server的连接时发生了与网络相关的或特定于实例的错误。无法找到或无法访问服务器。请验证实例名称是否正确,以及server是否配置为允许远程连接。(提供程序:命名管道提供程序,错误: 40 -无法打开到Server的连接) (Microsoft SQL Server,错误: 53)
找不到网络路径“
发布于 2019-08-20 13:00:14
Integrated Security=True;意味着用于运行应用程序池的当前凭据也将用于登录到SQL数据库。使用Integrated Security=True;和用户ID +密码是没有意义的。一个或另一个。
因此,如果您的IIS实例使用User123登录的应用程序池,而位于该IIS实例上的.NET应用程序连接到SQL数据库,那么只要Integrated Security=True;,.NET应用程序就会尝试使用User123登录到User123数据库。通常,出于安全考虑,人们这样做是为了确保web.config中没有明文密码。编辑:通过右键单击IIS管理器中的应用程序池并进入“高级设置”,可以看到应用程序池使用的是哪个用户。
如果它只在您有Integrated Security=True;时才能工作,那么这就意味着只有该用户拥有访问SQL数据库的权限。我将打开SSMS,导航到SQL数据库,并查看Security导航树下的Security。请记住,数据库服务器和数据库本身都有一个Login,因此您可能需要在两个地方配置它。
https://stackoverflow.com/questions/57574153
复制相似问题