通过网络访问sql server database 2008 r2时出现问题

时间:2011-09-28 18:29:17

标签: c# sql-server-2008-r2

我刚刚使用内置于2008 r2版本的SQL数据库完成了我的c#应用程序

我想通过LAN共享此数据库,我的连接字符串是:

ConnectionString = @"Data Source=192.168.0.1,1433\SQLEXPRESS;user id=Rula; password=marojo;AttachDbFilename=\\192.168.0.1\Release\WEPA.mdf;Connection Timeout=30;Integrated Security=SSPI;user instance=true";

其中192.168.0.1是托管sqlexpress实例的计算机的IP

当我从托管计算机本地连接到数据库时,我没有错误,但是当我尝试从共享应用程序连接到数据库时,我收到以下错误:

用户无权执行此操作。

当我将GUEST用户映射到托管计算机上的数据库时,因为我知道如果计算机尝试远程连接到数据库,它会以访客身份连接。

注意:我的应用程序和数据库通过网络共享在同一个文件夹中,并且本地一切正常

请问我能解决这个问题???? 提前谢谢= - )

5 个答案:

答案 0 :(得分:3)

如果两台计算机不在同一个域中,则会失败。您可能想使用sql logins

答案 1 :(得分:1)

来宾帐户不会在受信任的连接中使用。集成连接使用连接字符串附加到进程的用户帐户 http://forums.asp.net/t/822604.aspx/1

如果您想使用集成安全性,则需要将Web服务器配置为摘要登录,然后您需要授予对所有(潜在)经过身份验证的用户访问数据库的访问权限。由于您要添加到流程中的不必要的复杂性,通常不会这样做。只需使用像Ali所说的sql链接就可以完成它。

答案 2 :(得分:1)

好的,我在连接字符串中看到了一些错误。

即,您已经定义了用户ID和密码...然后您继续设置Integrated Security标志。这些是相互排斥的。它可以作为应用程序正在执行的同一用户连接(很可能是应用程序池用户帐户),也可以按照连接字符串中定义的用户进行连接。

你看到7和XP之间存在差异的原因很简单,一个是默认使用用户ID /密码,另一个是默认使用集成安全性。

我建议您访问http://www.connectionstrings.com/以构建正确的连接字符串。

<强>更新

我看到的其他事情。首先,AttachDbFilename只能用于集成安全性。显然这不可能,所以你需要摆脱该参数并直接在服务器上配置sqlexpress以定位该数据库文件。

其次,用户实例用于桌面部署..而不是服务器。摆脱它,因为它将是一个巨大的记忆猪。

第三,请阅读:http://msdn.microsoft.com/en-us/library/ms247257(v=VS.100).aspx

答案 3 :(得分:0)

这可能发生的原因有很多:

  1. 未启用SQL浏览器服务
  2. 使用可信连接的连接字符串,并且您未设置为该用户(通过从当前上下文中获取用户来检查您的代码正在使用的用户)
  3. 您没有在客户端设置相同的协议(不太可能)
  4. 由于这是权限问题,您很可能必须在数据库中设置Windows域帐户才能使用它。如果这不是应用程序用户的选项,那么您可能希望转移到SQL帐户而不是Windows帐户。

答案 4 :(得分:0)

问题解决了!!

当数据库附加到sql server管理工作室时,它只是附加问题,它附加为旧名称或与从中复制的计算机相关

感谢大家的努力:)