110

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

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

4

10 回答 10

148

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

请参阅文档

于 2013-03-26T08:21:20.170 回答
34

实际上,您可以使用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 与附加数据库的连接中获取数据库连接字符串。当您选择数据库时,属性面板中会显示连接字符串

类属性的完整列表在 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用户登录。就像在这张图片中:

登录示例

于 2018-04-23T16:19:27.050 回答
16

.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();
于 2017-05-08T07:19:03.627 回答
11

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

string connetionString = "Data Source=.;Initial Catalog=DB name;Integrated Security=True;MultipleActiveResultSets=True";
于 2018-07-26T09:26:34.153 回答
8

当连接到另一台计算机上的 SQL Server 时,需要担心这些问题。

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

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

于 2013-03-26T07:33:33.860 回答
6

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

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

于 2013-03-26T07:36:41.293 回答
6

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

SQL Server Management Studio 的屏幕截图

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

于 2018-01-14T11:49:55.977 回答
6

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

 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);
于 2019-07-15T07:47:24.160 回答
5

You need to understand that a database server or DBA would not want just anyone to be able to connect or modify the contents of the server. This is the whole purpose of security accounts. If a single username/password would work on just any machine, it would provide no protection.

That "sa" thing you have heard of, does not work with SQL Server 2005, 2008 or 2012. I am not sure about previous versions though. I believe somewhere in the early days of SQL Server, the default username and password used to be sa/sa, but that is no longer the case.

FYI, database security and roles are much more complicated nowadays. You may want to look into the details of Windows-based authentication. If your SQL Server is configured for it, you don't need any username/password in the connection string to connect to it. All you need to change is the server machine name and the same connection string will work with both your machines, given both have same database name of course.

于 2013-03-26T07:35:23.223 回答
-3
"ConnectionString":{
  "Database_Name": "server=.;database=Database_Name;Integrated Security=true;"
},

试试这个

于 2019-06-20T18:28:30.370 回答