【发布时间】:2009-07-23 10:15:50
【问题描述】:
SQL Express 2005 正在本地运行。我有一个由另一个人在同一台机器上运行的项目。我要做的就是连接它,不会那么难吧?
这是我在旧的经典 ASP 代码中用来访问在同一实例上运行的另一个数据库的代码:
Provider=SQLOLEDB;Data Source=MYLAPTOP\MSSMLBIZ;Persist Security Info=True;User ID=TestUser;Password=letmein;Initial Catalog=TestDB
但尝试一个版本会使 .net 代码出现摇摆不定,因为他是使用 SQLServer 驱动程序编写的,因此它不喜欢提供程序的东西。
这是他代码中的原始连接字符串:
Server=(local);Initial Catalog=TheDatabase;User Id=TheUser;Password=ThePassword;
我去过http://www.connectionstrings.com/sql-server-2005 并尝试了那里的几个选项,这些都得到“SQL Server 不存在或访问被拒绝”(这是多么可爱的混合错误消息!):
- Data Source=localhost;Integrated Security=True;Initial Catalog=TheDatabase
- 数据源=localhost\SQLEXPRESS;Integrated Security=True;初始目录=TheDatabase
- Data Source=MyLaptop\SQLEXPRESS;Integrated Security=True;Initial Catalog=TheDatabase
- Server=MyLaptop\SQLEXPRESS;Initial Catalog=TheDatabase;User Id=TheUser;Password=ThePassword;
我在 SQL Express 中为 MyLaptop/IUSR_MyLaptop、MyLaptop/ASPNET、MyLaptop/IWAM_MyLaptop 创建了登录名,并为他们授予了对我的数据库的所有读/写权限,并将它们的默认数据库设置为 TheDatabase。
我到底做错了什么,我该如何进一步调试问题?
更新:特别感谢 Chris 的所有指点,最后到达那里,如果您遇到类似问题,请阅读所有 cmets,其中有很多关于如何追踪它们的链接和提示。
【问题讨论】:
-
可能是一个愚蠢的问题,但您尝试连接的 sql express 服务器的实际实例名称是什么?是 localhost\sqlexpress 还是别的什么?将应用程序排除在外,然后尝试通过 sqlcmd 连接到 sql,方法是在命令提示符下执行 'sqlcmd -S servername\instancename -E' 并查看它是否连接。
-
该实例实际上称为 MSSMLBIZ,但为清楚起见,将其保留为 SQLExpress。在上面尝试并得到了这个:SQL Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF]。 Sqlcmd:错误:Microsoft SQL Native Client:建立与服务器的连接时发生错误。连接到 SQL Server 2005 时,此故障可能是由于在默认设置下 SQL Server 不允许远程连接。 Sqlcmd: Error: Microsoft SQL Native Client : Login timeout expired。签入服务器配置并全部打开?
-
要尝试重新安装以尝试重置所有内容并重新开始...
-
重新安装是一头猪!感谢本文的帮助,以防其他人在 Win XP SP2 上收到“SQL Server 无法启动”错误:support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B920114
标签: asp.net connection-string database-connection sql-server-express