我正在开发一个简单的 C# 应用程序,我想知道这一点:当我将我的应用程序连接到我的 PC 上的 SQL Server 时,我知道连接字符串(服务器名称、密码等),但是当我连接它时到另一台 PC,SQL Server 连接字符串不同。SQL Server 中是否有带有可以连接的默认帐户的通用帐户?
我听说过sa
SQL Server 中的帐户。是什么sa
?
我正在开发一个简单的 C# 应用程序,我想知道这一点:当我将我的应用程序连接到我的 PC 上的 SQL Server 时,我知道连接字符串(服务器名称、密码等),但是当我连接它时到另一台 PC,SQL Server 连接字符串不同。SQL Server 中是否有带有可以连接的默认帐户的通用帐户?
我听说过sa
SQL Server 中的帐户。是什么sa
?
using System.Data.SqlClient;
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=ServerName;" +
"Initial Catalog=DataBaseName;" +
"User id=UserName;" +
"Password=Secret;";
conn.Open();
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=ServerName;" +
"Initial Catalog=DataBaseName;" +
"Integrated Security=SSPI;";
conn.Open();
请参阅文档。
实际上,您可以使用SqlConnectionStringBuilder
该类来构建您的连接字符串。要构建连接字符串,您需要从中实例化一个对象,SqlConnectionStringBuilder
并使用用于连接数据库的参数设置它们的属性。然后您可以从对象的属性中获取连接字符串,如下例所示:ConnectionString
SqlConnectionStringBuilder
例如:
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用户登录。就像在这张图片中:
.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();
您可以按如下方式使用连接字符串,您只需要添加您的数据库名称。
string connetionString = "Data Source=.;Initial Catalog=DB name;Integrated Security=True;MultipleActiveResultSets=True";
当连接到另一台计算机上的 SQL Server 时,需要担心这些问题。
很多时候,SQL Server 可能作为默认实例运行,这意味着您可以简单地指定主机名/IP 地址,但您可能会遇到它作为命名实例运行的情况(例如SQL Server Express Edition)。在这种情况下,您必须指定主机名/实例名称。
如果您的服务器在域中,您可以使用 Windows 身份验证,也可以使用 SQL Server 身份验证。Sa是系统管理员,用于 SQL Server 身份验证的 root 帐户。但是使用 if 连接到您的客户是一种不好的做法。
您应该创建自己的帐户,并使用它们连接到您的 SQL Server 实例。在您设置帐户登录的每个连接中,它的密码和您想要连接的默认数据库。
sa
是 SQL Server 默认附带的系统管理员帐户。您可能已经知道,您可以使用两种方式登录 SQL Server。
因此,有适合每个场景的连接字符串(例如 Windows 身份验证、localdb 等)。使用ASP.NET Web 应用程序的 SQL Server 连接字符串来构建连接字符串。这些是 XML 标记。您只需要一个connectionString值。
我们可以像这样简单地连接到数据库:
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);
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.
"ConnectionString":{
"Database_Name": "server=.;database=Database_Name;Integrated Security=true;"
},
试试这个