我们可以为 SQL Server 和 SQL Server Express 提供通用的连接字符串吗?

Posted

技术标签:

【中文标题】我们可以为 SQL Server 和 SQL Server Express 提供通用的连接字符串吗?【英文标题】:Can we have generalized connection string for SQL Server and SQL Server Express? 【发布时间】:2009-10-23 14:13:00 【问题描述】:

我有一个部署在机器上的 WCF 服务。此 WCF 服务可以配置为 SQL Server 或 SQL Server Express。

注意:SQL 数据库位置可以是部署 WCF 服务的其他机器。

我将以下信息放入 XML 文件中:

    用户名 密码 服务器名称 机器名称

如果是 SQL Server Express

ServerName 属性是“SQLEXPRESS”。在内部,我将 ServerName 附加到 MachineName 中,因此 serverName 为:

机器名\SQLEXPRESS

传递给连接字符串。

如果是 SQL Server

当我将 ServerName 传递给 SQL Server 时,它会引发异常。

请指导我找到最佳方法!

【问题讨论】:

您能否向我们展示其中的两个设置 - 一个用于 SQL Server,一个用于 Express 版本 - 并向我们展示生成的连接字符串是什么?? 【参考方案1】:

您可以使用相同的连接字符串格式连接到 SQL Server Express 和完整版。

只需确保您使用正确的字符串,对于默认安装,这样的字符串很常见。

Data Source=MachineName\SQLExpress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

对于完整的 SQL Server

Data Source=MachineName;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

【讨论】:

【参考方案2】:

有什么例外?另外我不确定 ServerName 和 MachineName 之间有什么区别。也许您的意思是 ServerName 和 InstanceName?你应该这样构造你的字符串(伪代码,我不知道你使用的是什么语言):

DataSource = ServerName
If (InstanceName != "")
    DataSource += "\" + InstanceName

【讨论】:

【参考方案3】:

最可能的原因是您的 MSSQLSERVER 实例在默认实例而不是命名实例下运行(这是 SQL Express 所做的)。一种解决方法是配置一个本地属性文件,该文件包含特定于环境的连接字符串。然后在配置文件本身中引用该文件,或者让您的部分构建过程将信息合并到配置文件中。

【讨论】:

以上是关于我们可以为 SQL Server 和 SQL Server Express 提供通用的连接字符串吗?的主要内容,如果未能解决你的问题,请参考以下文章

sql server profiler 是啥文件

SQL Server 死锁的告警监控

Python和SQL Server 2017的强大功能

sql server set赋值和select 赋值的区别以及使用方法

sql server的sql语句怎么判断一个字段是不是为空

如何从 SQL Server SELECT 语句返回新的 IDENTITY 列值?