2012-07-05 151 views
1

我正在使用C#web服务。无法连接到SQL Server 2008的.Net

我已经部署了一个在我的本地系统上完美工作的Web服务,但是当我尝试在虚拟专用服务器上运行相同的服务时,它返回一个错误。

这是我的连接字符串

Data Source = <serverinstance>\\SQLEXPRESS; Initial Catalog = DomainTable; User ID= <serverinstance>\\admin; Password = <Windows_Login_Password> 

在此之前我就是用这个连接字符串

Data Source=<serverinstance>\\SQLEXPRESS; Initial Catalog=DomainTable; Integrated Security=SSPI"; 

其中没有一个是为我工作。请帮助它真的非常重要

+0

是数据库运行在与IIS相同的机器上? – 2012-07-05 19:14:46

+1

请包括*实际*详细信息,例如您对(服务器名称,本地主机,IP地址等)以及“返回错误”意思 - 例如包括*实际错误*。 – 2012-07-05 19:16:43

+0

是sqlserver 2008安装在同一台机器上 – Pirate 2012-07-05 19:17:11

回答

2

Data Source = serverinstance \ SQLEXPRESS;
----------------------------------------- ^这里只有一个斜杠

还要确保远程服务器可以看到您所引用的任何内容,如<serverinstance>。您可能会将此作为localhost,但您的Web服务器不认为您的机器是本地主机。它也可能无法通过名称来访问它,特别是如果它位于不同的域中。

如果您尝试使用Windows身份验证,有地球上没有办法,你应该使用:

用户ID = serverinstance \管理;密码= Windows_Login_Password

哇,从来没有硬编码Windows密码任何地方。如果你想使用SQL认证,那么设置。否则,您应该使用此代替用户ID /密码:

Persist Security Info = true;

确保IIS用户已被授予对您的SQL Server的访问权限。

+0

整个字符串是在双引号,因此我使用双反斜线 – Pirate 2012-07-05 19:16:10

+0

有没有办法不需要在C#中做到这一点。 – 2012-07-05 19:17:30

0

试试吧;

"data source=.\\SQLEXPRESS;Integrated Security=SSPI;initial catalog=DomainTable" 

我相信用户名/密码一般只需要远程连接,并且您必须为指定的数据库设置它们。如果您尚未创建所需的登录凭据,上面的连接字符串应该让您继续在本地计算机上运行sqlexpress的运行实例。

编辑

如果您使用的是IIS主办,这里是从最近的文章中,我做了部署和设置应用程序池与SQL Express的2008年工作的一大块即使你不使用IIS ,你仍然需要做这样的事情来让你的托管环境与SQL Server正确设置。

步骤1中的IIS用户

在MS SQL Server的安全部分创建一个数据库登录,需要用鼠标右键点击用户和IIS APPPOOL(IIS APPPOOL \ apppoolname,在一节创建的,步骤2)。检查出DP的回答这里查看更多一步一个步骤 - Add IIS 7 AppPool Identities as SQL Server Logons

第2步设置权限为IIS用户对数据库

右击数据库名称,然后单击属性。在权限部分添加您刚刚创建的APPPOOL用户,请务必为他提供所需的Execute \ Select权限。

注意:Website1需要执行,选择,删除,插入权限。 Website2也在使用这个应用程序池,它不应该是因为我们不需要让用户在trimdynamics应用程序中拥有这种功能。我们可以分离应用程序池,以便我们的修剪动态IIS USRS只获得执行和选择权限。

如果这没有帮助,这是很难说什么怎么回事没有您的托管结构的具体知识,还有的部署时gotch遐从开发大量的对生产环境:(

+0

抱歉克里斯我也试过这个,但它不工作:( – Pirate 2012-07-05 19:26:22

+1

@皮拉特DEFINE“不工作”请。例如添加***实际的错误信息***到您的问题! – 2012-07-05 19:27:40

+0

@皮拉特刚注意到你部署在你的开发服务器,这会导致你第一次遇到很多麻烦,你必须这样想 - 现在IIS /一些服务托管你的网站,而不是你本地的机器,事情有点不同,在你的开发环境中,工作正常,因为你的执行查询作为当前用户,它有权限。当您托管您的应用程序时,例如在IIS中,您知道有一个IIS池正在执行您的数据库上的查询,该查询不会自动拥有权限。您是否收到用户许可erro – clamchoda 2012-07-05 19:31:19