我的客户告诉我,我为他们制作的程序不会连接到SQL服务器命名实例,我有一个没有命名实例的标准SQL服务器,所以我想知道如何测试它。命名实例连接字符串如下所示,反斜杠可能是我的代码失败吗?
Driver = {SQL Native Client}; Server = myServerName \ theInstanceName; Database = myDataBase;
我的代码如下:
sqlServer=s.Substring(keyword.Length,s.Length-keyword.Length);
FormODBC formODBC=new FormODBC(this);
formODBC.SetSqlServer(sqlServer,dbUsername,dbPassword,database,table);
formODBC.ReadData();
我应该如何处理反斜杠,因为我怀疑这可能是问题?
由于
答案 0 :(得分:3)
我们有带有命名实例的SQL服务器。 示例:myservername \ sql2005。 反斜杠很好,在连接字符串服务器名称将是“myservername \ sql2005”,工作100%罚款。您可以在同一台服务器上拥有“常规实例”,将是“myservername”
PS只是对你的函数进行单元测试,使连接字符串返回“myservername \ sql2005”。
答案 1 :(得分:3)
另外,请记住反斜杠是C#字符串中的转义字符。如果您的实例名称包含在字符串变量中,请确保执行以下任一操作:
string server = "myServer\\myInstance";
或
string server = @"myServer\myInstance";
答案 2 :(得分:1)
答案是确保您的连接字符串是可配置的,并将其设置为:
data source = localhost \ msexpress; database = dbname; trusted_connection = true;
答案 3 :(得分:0)
斯科特 冒着明显的风险,您是否尝试在自己的开发环境中设置命名实例?我实际上并不知道你的问题的答案,但我从未亲自遇到一个解决方案,测试直接失败的方案没有帮助。至少你应该能够获得更好的调试信息,以确切地知道什么是失败的。祝你好运得到解决。
此致 克里斯
答案 4 :(得分:0)
还偶尔出现SQL Express版本,其名称为My ServerName \ SQLEXPRESS。这可能会使一些人绊倒,因为他们不会想到以这种方式指定服务器。
答案 5 :(得分:0)
您可以将连接字符串解压缩到配置文件(请注意,这不一定是安全的 - 这取决于他们的SQL安全服务器的设置方式以及运行应用程序的帐户) - 然后您的客户端就可以添加部署时,服务器与应用程序配置的相应连接字符串。
注意: