如何设置 SQL Server 连接字符串?

Posted

技术标签:

【中文标题】如何设置 SQL Server 连接字符串?【英文标题】:How can I set an SQL Server connection string? 【发布时间】:2013-03-15 22:12:58 【问题描述】:

我正在开发一个简单的 C# 应用程序,我想知道这一点:当我将我的应用程序连接到我的 PC 上的 SQL Server 时,我知道连接字符串(服务器名称、密码等),但是当我我将它连接到另一台 PC,SQL Server 连接字符串不同。 SQL Server 中是否有带有可以连接的默认帐户的通用帐户?

我听说过 SQL Server 中的 sa 帐户。什么是sa

【问题讨论】:

您永远不想使用默认帐户用户名和密码来设置对 SQL Server 或任何连接类型的访问。 SA 意思是 sql server sys_admin 角色 能否使用 Windows 身份验证代替 SQL Server 身份验证?这样可以避免完全使用用户 ID 和密码。 【参考方案1】:

.NET DataProvider -- 使用用户名和密码的标准连接

using System.Data.SqlClient;

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
  "Data Source=ServerName;" +
  "Initial Catalog=DataBaseName;" +
  "User id=UserName;" +
  "Password=Secret;";
conn.Open();

.NET DataProvider -- 可信连接

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
  "Data Source=ServerName;" +
  "Initial Catalog=DataBaseName;" +
  "Integrated Security=SSPI;";
conn.Open();

请参阅the documentation。

【讨论】:

如何使用这种格式但使用域用户?当我使用user id=Domain\Uname 时,我一直得到一个红色下划线我认为这与无效的转义字符有关,我应该如何正确地做到这一点? @Wairimu Murigi 您必须转义反斜杠,即用户 id=Domain\\Uname @Itachi:很抱歉发布了 necropost。我们是否使用 SQLCMD 在 Windows 命令行中输入它? 我的密码包含;字符 @Kiquenet 你可以尝试用单引号或双引号来包裹它,检查this out。【参考方案2】:

实际上您可以使用SqlConnectionStringBuilder 类来构建您的连接字符串。要构建连接字符串,您需要从该SqlConnectionStringBuilder 实例化一个对象,并使用您用于连接到数据库的参数设置它们的属性。然后您可以从SqlConnectionStringBuilder 对象的ConnectionString 属性中获取连接字符串,如下例所示:

例如:

SqlConnectionStringBuilder sConnB = new SqlConnectionStringBuilder ()
    
        DataSource = "ServerName",
        InitialCatalog = "DatabaseName",
        UserID = "UserName",
        Password = "UserPassword"
    .ConnectionString

SqlConnection conn = new SqlConnection(sConnB.ConnectionString);

您可以使用new 运算符直接进行。

例如:

SqlConnection conn = new SqlConnection(
    new SqlConnectionStringBuilder ()
    
        DataSource = "ServerName",
        InitialCatalog = "DatabaseName",
        UserID = "UserName",
        Password = "UserPassword"
    .ConnectionString
);

您可以添加更多参数来构建您的连接字符串。请记住,参数是由SqlConnectionStringBuilder 对象属性中设置的值定义的。

您还可以从 Microsoft Visual Studio 与附加数据库的连接中获取数据库连接字符串。当您选择数据库时,属性面板中会显示连接字符串

SqlConnectionStringBuilder 类的完整属性列表在此page from the Microsoft MSDN site 中列出。

关于 SQL Server 的默认用户,sa 表示“系统管理员”,其密码因 SQL Server 版本而异。在this page 上,您可以看到密码是如何变化的。

SQL Server 2008/R2 Express 用户: sa 密码: [空白密码 - 将字段留空以连接] SQL Server 201x Express 用户: sa 密码: Password123 SQL Server 20xx Web 或标准用户: sa 密码: 将相同 作为您在 VDS 启用时的管理员或 root 用户密码 已配置。

您可以在 SQL Server 数据库管理器启动时在此登录窗口中使用 sa 用户登录。就像这张图片:

【讨论】:

【参考方案3】:

.NET 数据提供者 -- 默认相对路径 -- 标准连接

 using System.Data.SqlClient;
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "User Id=UserName;" + 
 "Password=Secret;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;"conn.Open();

.NET 数据提供者 -- 默认相对路径 -- 可信连接

 using System.Data.SqlClient;
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "Integrated Security=true;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();

.NET 数据提供者 -- 自定义相对路径 -- 标准连接

using System.Data.SqlClient;
AppDomain.CurrentDomain.SetData(
"DataDirectory", "C:\MyPath\");
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "User Id=UserName;" + 
 "Password=Secret;" + 
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();  

.NET 数据提供者 -- 自定义相对路径 -- 可信连接

 using System.Data.SqlClient;
 AppDomain.CurrentDomain.SetData(
 "DataDirectory", "C:\MyPath\");
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "Integrated Security=true;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();

【讨论】:

您能否修复代码以使其实际编译?您可以edit your answer(但没有“编辑:”、“更新:”或类似的)。【参考方案4】:

您可以使用如下连接字符串,您只需要添加您的数据库名称。

string connetionString = "Data Source=.;Initial Catalog=DB name;Integrated Security=True;MultipleActiveResultSets=True";

【讨论】:

【参考方案5】:

在连接到另一台计算机上的 SQL Server 时,需要担心很多事情。

机器的主机/IP 地址 初始目录(数据库名称) 有效的用户名/密码

SQL Server 可能经常作为默认实例运行,这意味着您可以简单地指定主机名/IP 地址,但您可能会遇到它作为命名实例运行的情况(例如SQL Server Express Edition)。在这种情况下,您必须指定主机名/实例名称。

【讨论】:

凭据是否以纯文本形式从客户端传递到 sql sqlserver?如果是,有什么方法可以保护它?【参考方案6】:

如果您的服务器在域中,您可以使用 Windows 身份验证,也可以使用 SQL Server 身份验证。 Sa 是系统管理员,用于 SQL Server 身份验证的 root 帐户。但是使用 if 连接到您的客户是一种不好的做法。

您应该创建自己的帐户,并使用它们连接到您的 SQL Server 实例。在您设置帐户登录、其密码默认数据库的每个连接中,您想连接。

【讨论】:

“SQL”不是“SQL Server”的有效快捷方式。【参考方案7】:

sa 是 SQL Server 默认自带的系统管理员帐号。您可能已经知道,您可以使用两种方式登录 SQL Server。

因此有适合每个场景的连接字符串(例如Windows身份验证,localdb等)。使用 SQL Server Connection Strings for ASP.NET Web Applications 构建您的连接字符串。这些是 XML 标记。您只需要 connectionString 的值。

【讨论】:

【参考方案8】:

我们可以像这样简单地连接到数据库:

 uid=username;pwd=password;database=databasename;server=servername

例如:

string connectionString = @"uid=spacecraftU1;pwd=Appolo11;
                            database=spacecraft_db;
                            server=DESKTOP-99K0FRS\\PRANEETHDB";
SqlConnection con = new SqlConnection(connectionString);

【讨论】:

这是一个实际的用户名/密码对吗?【参考方案9】:

您需要了解数据库服务器或DBA 不希望任何人都能够连接或修改服务器的内容。这是安全帐户的全部目的。如果一个用户名/密码可以在任何机器上工作,它就不会提供任何保护。

你听说过的那个“sa”不适用于SQL Server 2005、2008 或2012。我不确定以前的版本。我相信在 SQL Server 早期的某个地方,默认的用户名和密码曾经是 sa/sa,但现在已经不是这样了。

仅供参考,如今数据库安全性和角色要复杂得多。您可能想要查看基于 Windows 的身份验证的详细信息。如果为它配置了 SQL Server,则连接字符串中不需要任何用户名/密码即可连接到它。您需要更改的只是服务器机器名称,并且相同的连接字符串将适用于您的两台机器,当然它们具有相同的数据库名称。

【讨论】:

sa 是 SQL Server 的系统管理员帐户。如果安装了sql server认证,或者混合模式认证,需要设置sa账号。以供将来参考,here's a guide 了解如果未安装 sa 帐户并打开 sql server 身份验证,如何设置它。【参考方案10】:
"ConnectionString":
  "Database_Name": "server=.;database=Database_Name;Integrated Security=true;"
,

试试这个

【讨论】:

解释一下。

以上是关于如何设置 SQL Server 连接字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取SQL server数据库的连接字符串

如何使用 sql server 连接或配置 elasticsearch

设置SQL Server数据库连接的目录(连接字符串)

如何从 SSIS 包中检索 SQL Server 实例名称

Delphi连接SQL Server 2000

如何获取SQL server数据库的连接字符串