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


93

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


5
您永远不需要使用默认帐户用户名和密码来设置对SQL Server或与此相关的任何连接类型的访问权限。
jordanhill123

4
SA平均SQL Server sys_admin角色
Elshan 2013年

2
可以使用Windows身份验证代替SQL Server身份验证吗?这样可以避免完全使用用户名和密码。
菲利普·谢德

Answers:


127

.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();

请参阅doc


1
如何使用这种格式,但使用域用户?使用时我会一直显示红色下划线,我user id=Domain\Uname认为这与无效的转义符有关,我应该如何做呢?
Wairimu Murigi '16

1
@Wairimu Murigi您必须转义反斜线,即用户id = Domain \\ Uname
John Hartley,

1
@Itachi:很抱歉,在死角了。我们是否使用SQLCMD在Windows命令行中输入此内容?
MSIS

1
我的密码包含;字符
Kiquenet

1
@Kiquenet你可以尝试单或双引号把它包起来,检查了。
Itachi

29

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

例如:

    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附带的数据库获取数据库连接字符串。选择DB时,在属性面板中显示连接字符串

Microsoft MSDN站点上的本页中SqlConnectionStringBuilder列出了类的属性的完整列表

关于SQL Server的默认用户,sa表示“系统管理员”,其密码因SQL Server版本而异。在此页面中,您可以查看密码的变化方式。

SQL Server 2008 / R2 Express用户: sa密码: [空白密码-将字段留空以进行连接]

SQL Server 201x Express用户: sa密码: Password123

SQL Server 20xx Web或标准用户: sa密码: 与设置VDS时的管理员或root用户密码相同。

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

登录示例


15

.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();


8

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

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

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


6

您需要了解,数据库服务器或DBA并不希望任何人都能连接或修改服务器的内容。这是安全帐户的全部目的。如果单个用户名/密码只能在任何计算机上运行,​​则不会提供任何保护。您听说过的“一句话”不适用于SQL Server 2005、2008或2012。不过,不确定以前的版本。我相信在SQL Server早期的某个地方,默认的用户名和pwd曾经是sa / sa,但现在不再如此了。

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


1
sa是SQL Server的sysadmin帐户。如果它是通过sql server身份验证或混合模式身份验证安装的,则需要设置一个sa帐户。供以后参考,如果未在打开sql server身份验证的情况下安装sa帐户,则此指南提供了有关如何设置它的指南
iCodeSometime '17

6

如果服务器在域中,则可以使用Windows身份验证,也可以使用Sql身份验证。Sa-是系统管理员,是SQL Server身份验证的根帐户。但是,如果使用if来连接客户则是一种不良做法。您应该创建自己的帐户,并使用它们连接到SQL。在每个连接中,您都设置了帐户login,其密码和要连接的默认数据库



4

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

 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);

-2
"ConnectionString":{
  "Database_Name": "server=.;database=Database_Name;Integrated Security=true;"
},

试试这个

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.