我正在开发一个简单的C#应用程序,我想知道这一点:当我将应用程序连接到PC上的SQL Server时,我知道了连接字符串(服务器名称,密码等),但是当我将其连接到另一个时PC上,SQL Server连接字符串不同。SQL Server中是否有一个可以连接的默认帐户附带的普通帐户?我听说过sa
SQL Server中的帐户,这是sa
什么?
SA
平均SQL Server sys_admin
角色
我正在开发一个简单的C#应用程序,我想知道这一点:当我将应用程序连接到PC上的SQL Server时,我知道了连接字符串(服务器名称,密码等),但是当我将其连接到另一个时PC上,SQL Server连接字符串不同。SQL Server中是否有一个可以连接的默认帐户附带的普通帐户?我听说过sa
SQL Server中的帐户,这是sa
什么?
SA
平均SQL Server sys_admin
角色
Answers:
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();
请参阅doc。
user id=Domain\Uname
认为这与无效的转义符有关,我应该如何做呢?
;
字符
实际上,您可以使用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附带的数据库获取数据库连接字符串。选择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用户身份登录。就像这张图片:
.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";
您需要了解,数据库服务器或DBA并不希望任何人都能连接或修改服务器的内容。这是安全帐户的全部目的。如果单个用户名/密码只能在任何计算机上运行,则不会提供任何保护。您听说过的“一句话”不适用于SQL Server 2005、2008或2012。不过,不确定以前的版本。我相信在SQL Server早期的某个地方,默认的用户名和pwd曾经是sa / sa,但现在不再如此了。
仅供参考,如今数据库安全性和角色要复杂得多。您可能需要研究基于Windows的身份验证的详细信息。如果为其配置了SQL Server,则在连接字符串中不需要任何用户名/密码即可连接到它。您只需更改服务器机器名称,并且相同的数据库名称,相同的连接字符串就可以在两台机器上使用。
sa
是默认情况下sql server附带的系统管理员帐户。如您所知,您可以使用两种方法登录SQL Server。
因此,存在适用于每种情况的连接字符串(例如Windows身份验证,localdb等)。使用https://msdn.microsoft.com/zh-cn/library/jj653752(v=vs.110).aspx#sqlserver构建连接字符串。这些是XML标签。您只需要connectionString的值