在我的应用程序中,我创建了一个动态连接字符串:
server = "Server = .\\" + this.comboBoxListInstances.SelectedItem.ToString() + ";";
connectionString = server + attachDatabase + databaseName + "Integrated Security = true";
在我的笔记本电脑上(使用SQL Server 2008 express),结果是:
// server = "Server = .\\SQLEXPRESS;" (I select SQLEXRESS in comboBox)
// attachDatabase = "AttachDbFileName = |DataDirectory|\\Resources\\DT.mdf;"
// databaseName = "Database = DATA;";
// so the conectionString is : "Server = .\\SQLEXPRESS;AttachDbFileName = |DataDirectory|\\Resources\\DT.mdf;Database = DATA;Integrated Security = true"
我阅读注册表以查找所有SQL服务器实例,并让用户选择他们想要的内容 这个conectionString在我的笔记本电脑和我的朋友使用SQL服务器表达也很好。但是,当我在安装了SQL Server 2008 R2的另一位朋友的笔记本电脑上运行我的应用程序时,它会引发异常:
它表示连接字符串无效,它是:
"Server = .\\MSSQLSERVER;AttachDbFileName = |DataDirectory|\\Resources\\DT.mdf;Database = DATA;Integrated Security = true"
当我尝试暂时禁用comboBoxListInstance并使用此conectionString
时"Server = (local);AttachDbFileName = |DataDirectory|\\Resources\\DT.mdf;Database = DATA;Integrated Security = true"
该应用有效!所以,我认为SQL Server express和SQL Server的连接字符串之间存在差异。这样对吗?有一个类似于我的问题here,他们说没有区别。如果他们是对的,我的connectionString有什么问题?
P / S:抱歉我的语法不好答案 0 :(得分:0)
看起来您刚刚证明SqlExpress将其默认命名实例安装为" MSSQLSERVER"完整的sql安装一个未命名的默认空白实例。
(本地)意味着" 。\" " 127.0.0.1" WHATEVER实例是1433。
.MSSQLEXPRESS明确表示。\ MSSQLEXPRESS可能是也可能不是(本地)默认实例。
As Aside通常在这一点上最相关的区别是常规SQL将在端口打开且TCP客户端准备好的情况下安装。
SQL Express只允许本地" dev"在激活外部端口和客户端协议之前的连接类型。