5

SQL Express 2005 在本地运行。我有一个由另一个人在同一台机器上运行的项目。我想做的就是连接到它,不会那么难吧?

这是我在旧的经典 ASP 代码中使用的一个,用于访问在同一实例上运行的另一个数据库:

Provider=SQLOLEDB;Data Source=MYLAPTOP\MSSMLBIZ;Persist Security Info=True;User ID=TestUser;Password=letmein;Initial Catalog=TestDB

但是尝试一个版本会使 .net 代码在他使用 SQLServer 驱动程序编写它时抛出一个摇摆不定,因此它不喜欢 Provider 的东西。

这是他的代码中的原始连接字符串:

服务器=(本地);初始目录=数据库;用户 ID=用户;密码=密码;

我去过http://www.connectionstrings.com/sql-server-2005并从那里尝试了几个选项,这些都得到“SQL Server 不存在或访问被拒绝”(多么可爱的混合错误消息是!):

  • 数据源=localhost;集成安全=True;初始目录=TheDatabase
  • 数据源=localhost\SQLEXPRESS;集成安全=True;初始目录=TheDatabase
  • 数据源=MyLaptop\SQLEXPRESS;集成安全=True;初始目录=TheDatabase
  • 服务器=MyLaptop\SQLEXPRESS;初始目录=数据库;用户 ID=用户;密码=密码;

我在 SQL Express 中为 MyLaptop/IUSR_MyLaptop、MyLaptop/ASPNET、MyLaptop/IWAM_MyLaptop 创建了登录名,并为它们授予了对我的数据库的所有读/写权限,并将它们的默认数据库设置为 TheDatabase。

我到底做错了什么,我该如何进一步调试问题?

更新:特别感谢克里斯的所有指点,最后到达那里,如果您遇到类似的问题,请阅读所有评论,有很多关于如何追踪它们的链接和提示。

4

4 回答 4

1

您能准确地告知配置中的内容吗?

您是否正在使用该块 - 在这种情况下,有效的连接字符串将是:

<add name="connection" providerName="System.Data.SqlClient" connectionString="Data Source=localhost\MSSMLBIZ;Initial Catalog=TheDatabase;Integrated Security=True" />

或者

<add name="connection" providerName="System.Data.SqlClient" connectionString="Data Source=localhost\MSSMLBIZ;Initial Catalog=TheDatabase;Integrated Security=False;User Id=TheUser;Password=ThePassword;Application Name=AppName;" />

或者您是否从应用程序设置中获取连接字符串 - 在这种情况下,我猜您的提供程序是在应用程序本身的代码中设置的?

于 2009-07-23T12:13:01.280 回答
0

您的数据源不应该是:Data Source=localhost\sqlexpress 吗?

于 2009-07-23T10:25:35.817 回答
0

您没有提到授予“TheUser”访问服务器上数据库的权限 - 如果您从另一台服务器恢复,您可能会遇到 sid 不匹配。

尝试运行

sp_update_users_login 'report'

针对有问题的数据库。

如果它在报告中返回用户帐户,请尝试:

sp_update_users_login 'update_one', 'theuser', 'theuser'

重新映射事物。

于 2009-07-23T10:37:10.003 回答
0

使用评论中的错误消息,您应该浏览http://blogs.msdn.com/sql_protocols/archive/2007/05/13/sql-network-interfaces-error-26-error-locating-server-中的项目实例指定的.aspx

我假设实例正在运行并且允许通过 tcpip 进行连接?

于 2009-07-23T10:47:06.693 回答