我正在尝试为将连接到不同计算机上的本地SQL Server实例的测试环境构建连接字符串。这样做的目的是让开发人员可以从TFS签出代码,构建它并运行测试用例,连接到他的本地数据库。问题是不同开发人员的计算机可能具有不同的SQL Server设置。特别是,有些可能正在运行整个服务器,其他可能正在运行SQL Server Express。
我正在尝试修改一个实用程序例程,该例程将采用模板连接字符串(例如Data Source=(local); Initial Catalog= myDB; Integrated Security=SSPI;
)并修改数据源以与本地服务器一起使用。
我尝试过使用SmoApplication.EnumAvailableServers()
(无论是否使用true或false参数,都返回一个空表)和SqlDataSourceEnumerator.GetDataSources()
(从网络返回2888台服务器,但本地机器上没有) ),SQLCMD -L
(不返回任何内容)。
有什么建议吗?
在替代方案中,是否有一种简单的方法来判断特定连接字符串是否将连接到服务器(如果没有,则不等待它超时)。如果我能找到答案,我可以尝试可能的嫌疑人,直到我找到工作。
答案 0 :(得分:2)
您可能会尝试获取以下连接字符串:
创建一个新的空白文件并将其命名为test.udl。
双击它,将出现“数据链接属性”对话框。
在“提供程序”选项卡上,选择“Microsoft OLE DB Provider for SQL Server”或“SQL Native Client”
在“连接”选项卡上,尝试各种设置并使用“测试连接”按钮进行测试。工作时单击“确定”。
在记事本中打开test.udl文件,将以“Provider =”开头的行复制到Web.config“ConnectionString”值中,但删除“Provider = SQLNCLI.1;”中的小部分。
答案 1 :(得分:1)
如果您希望每个开发人员使用他们自己的本地SQL服务器,那么ADO连接字符串应该将数据源设置为localhost
... ; Data Source=localhost; ...
此外,要获取当前服务器列表,请转到命令行并运行
osql -L
答案 2 :(得分:0)
这样可以解决问题:
Data Source=.\SQLEXPRESS
答案 3 :(得分:0)
您可以在注册表中查找所有本地SQL Server实例。此密钥包含列表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL
。
每个命名实例在此键中都有一个值。对于命名实例,值的名称与实例的名称相同。对于默认实例,该值将命名为MSSQLSERVER
。