繁体   English   中英

通过网络访问SQL Server数据库2008 R2时出现问题

[英]Problem accessing sql server database 2008 r2 over network

我刚刚用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用户映射到托管计算机上的数据库时,因为我知道如果计算机尝试远程连接到数据库,则它将作为来宾连接。

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

请问我该怎么做才能解决这个问题? 在此先感谢=-)

如果两台计算机不在同一域中,则将失败。 您可能要使用sql登录名

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

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

好的,我发现您的连接字符串中有几处错误。

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

您看到7和XP之所以不同的原因仅仅是因为一个默认使用用户ID /密码,另一个默认使用集成安全性。

我建议您访问http://www.connectionstrings.com/ ,以建立适当的连接字符串。

更新:

我看到的其他东西。 首先,AttachDbFilename只能与集成安全性一起使用。 显然,这是不可能的,因此您需要摆脱该参数,并直接在服务器上配置sqlexpress以将该数据库文件作为目标。

其次,用户实例用于桌面部署。 还要消除它,因为它将占用大量内存。

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

发生这种情况的原因有很多:

  1. SQL Browser服务未打开
  2. 使用可信连接的连接字符串,您没有设置为该用户(通过从当前上下文获取User来检查代码正在使用的用户)
  3. 您没有在客户端上设置相同的协议(不太可能)

由于这是一个权限问题,因此您很可能必须在数据库中设置Windows域帐户才能使用它。 如果这不是应用程序用户的选择,则您可能希望移至sql帐户而不是Windows帐户。

问题解决了 !!

当数据库附加到sql server management studio时,只是附加问题,它是作为旧名称附加的,或者与从其复制的计算机有关

谢谢大家的努力:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM