Cách đặt chuỗi kết nối SQL Server?


93

Tôi đang phát triển một ứng dụng C # đơn giản, tôi muốn biết điều này: Khi tôi kết nối ứng dụng của mình với SQL Server trên PC, tôi biết chuỗi kết nối (tên máy chủ, mật khẩu, v.v.), nhưng khi tôi kết nối nó với một PC, chuỗi kết nối SQL Server là khác nhau. Có tài khoản chung nào trong SQL Server đi kèm với tài khoản mặc định có thể kết nối không? Tôi đã nghe nói về satài khoản trong SQL Server, là sagì?


5
Bạn không bao giờ muốn sử dụng tên người dùng và mật khẩu tài khoản mặc định để thiết lập quyền truy cập vào SQL Server hoặc bất kỳ loại kết nối nào cho vấn đề đó.
jordanhill123

4
SAsys_adminvai trò máy chủ nghĩa là sql
Elshan

2
Bạn có thể sử dụng Xác thực Windows thay vì Xác thực SQL Server không? Điều đó sẽ tránh phải sử dụng mã sử dụng và mật khẩu hoàn toàn.
Philip Sheard

Câu trả lời:


128

.NET DataProvider - Kết nối tiêu chuẩn với tên người dùng và mật khẩu

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 - Kết nối đáng tin cậy

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

Tham khảo doc .


1
Làm cách nào để tôi có thể sử dụng định dạng này nhưng sử dụng một người dùng miền? Tôi tiếp tục nhận được một gạch dưới màu đỏ khi sử dụng, user id=Domain\Unametôi nghĩ rằng đó là một cái gì đó để làm với các ký tự thoát không hợp lệ, làm thế nào tôi nên làm điều đó một cách chính xác?
Wairimu Murigi

1
@Wairimu Murigi Bạn phải thoát khỏi dấu gạch chéo ngược tức là user id = Domain \\ Uname
John Hartley

1
@Itachi: Xin lỗi vì đã viết sai. Chúng ta có nhập điều này vào dòng lệnh Windows bằng SQLCMD không?
MSIS

1
Mật khẩu của tôi chứa ;ký tự
Kiquenet

1
@Kiquenet Bạn có thể thử dùng dấu ngoặc kép đơn hoặc dấu ngoặc kép để kết thúc, hãy kiểm tra điều này .
Itachi

30

Trên thực tế, bạn có thể sử dụng SqlConnectionStringBuilderlớp để xây dựng chuỗi kết nối của mình . Để xây dựng chuỗi kết nối , bạn cần khởi tạo một đối tượng từ đó SqlConnectionStringBuildervà đặt thuộc tính của chúng với các tham số bạn sử dụng để kết nối với DataBase. Sau đó, bạn có thể lấy chuỗi kết nối từ thuộc ConnectionStringtính từ SqlConnectionStringBuilderđối tượng, như được hiển thị trong ví dụ này:

Ví dụ:

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

SqlConnection conn = new SqlConnection(sConnB.ConnectionString);

Bạn có thể sử dụng newtoán tử để thực hiện điều đó trực tiếp.

Ví dụ:

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

Bạn có thể thêm nhiều tham số để xây dựng chuỗi kết nối của mình . Hãy nhớ rằng các tham số được xác định bởi các giá trị được thiết lập trong SqlConnectionStringBuilderthuộc tính đối tượng.

Ngoài ra, bạn có thể lấy chuỗi kết nối cơ sở dữ liệu từ sự kết hợp của Microsoft Visual Studio với DB đính kèm. Khi bạn chọn DB, trong bảng thuộc tính sẽ hiển thị chuỗi kết nối .

Danh sách đầy đủ các thuộc tính của SqlConnectionStringBuilderlớp được liệt kê trong trang này từ trang Microsoft MSDN.

Về người dùng mặc định của SQL Server, sa có nghĩa là "quản trị viên hệ thống" và mật khẩu của nó thay đổi tùy theo phiên bản SQL Server. Trong trang này, bạn có thể thấy mật khẩu thay đổi như thế nào.

Người dùng SQL Server 2008 / R2 Express: sa Mật khẩu: [mật khẩu trống - để trống trường để kết nối]

SQL Server 201x Express Người dùng: sa Mật khẩu: Password123

SQL Server 20xx Web hoặc Người dùng Chuẩn: sa Mật khẩu: sẽ giống với mật khẩu quản trị viên hoặc người dùng gốc của bạn tại thời điểm VDS được cấp phép.

Bạn có thể đăng nhập với sa dùng trong cửa sổ đăng nhập này vào đầu của SQL Server Database Manager. Giống như trong hình ảnh này:

Đăng nhập ví dụ


15

Nhà cung cấp dữ liệu .NET - Đường dẫn tương đối mặc định - Kết nối chuẩn

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

Nhà cung cấp dữ liệu .NET - Đường dẫn tương đối mặc định - Kết nối đáng tin cậy

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

Nhà cung cấp dữ liệu .NET - Đường dẫn tương đối tùy chỉnh - Kết nối chuẩn

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

Nhà cung cấp dữ liệu .NET - Đường dẫn tương đối tùy chỉnh - Kết nối đáng tin cậy

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

11

Bạn có thể sử dụng chuỗi kết nối như sau và bạn chỉ cần thêm tên cơ sở dữ liệu của mình.

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

8

Chúng là một số điều cần lo lắng khi kết nối với SQL Server trên một máy khác.

  • Địa chỉ máy chủ / IP của máy
  • Danh mục ban đầu (tên cơ sở dữ liệu)
  • Tên người dùng / mật khẩu hợp lệ

Rất thường máy chủ SQL có thể đang chạy như một ý định mặc định, có nghĩa là bạn có thể chỉ định tên máy chủ / địa chỉ ip nhưng bạn có thể gặp phải trường hợp nó đang chạy dưới dạng một phiên bản được đặt tên (ví dụ: Sql Express). Trong trường hợp này, bạn sẽ phải chỉ định tên máy chủ \ tên phiên bản.


6

Bạn cần hiểu rằng một máy chủ cơ sở dữ liệu hoặc DBA sẽ không muốn bất kỳ ai có thể kết nối hoặc sửa đổi nội dung của máy chủ. Đây là toàn bộ mục đích của tài khoản bảo mật. Nếu một tên người dùng / pwd chỉ hoạt động trên bất kỳ máy nào, nó sẽ không bảo vệ. Điều "sa" mà bạn đã nghe nói đến, không hoạt động với SQL Server 2005, 2008 hoặc 2012. Tuy nhiên, bạn không chắc chắn về các phiên bản trước. Tôi tin rằng ở đâu đó trong những ngày đầu của SQL Server, tên người dùng và pwd mặc định từng là sa / sa, nhưng điều đó không còn đúng nữa.

FYI, bảo mật cơ sở dữ liệu và các vai trò ngày nay phức tạp hơn nhiều. Bạn có thể muốn xem xét chi tiết xác thực dựa trên Windows. Nếu SQL Server của bạn được cấu hình cho nó, bạn không cần bất kỳ tên người dùng / pwd nào trong chuỗi kết nối để kết nối với nó. Tất cả những gì bạn cần thay đổi là tên máy chủ và cùng một chuỗi kết nối sẽ hoạt động với cả hai máy của bạn, tất nhiên cả hai đều có cùng tên db.


1
sa là tài khoản sysadmin cho SQL Server. Nếu nó được cài đặt với xác thực máy chủ sql hoặc xác thực chế độ hỗn hợp, bạn bắt buộc phải thiết lập một tài khoản sa. Để tham khảo trong tương lai, đây là hướng dẫn về cách thiết lập tài khoản sa nếu nó chưa được cài đặt với tính năng xác thực máy chủ sql được bật.
iCodeSometime

6

Bạn có thể sử dụng xác thực Windows, nếu máy chủ của bạn ở trong Miền hoặc xác thực Sql. Sa - là Quản trị viên hệ thống, tài khoản gốc để xác thực máy chủ SQL. Nhưng đó là một thực tiễn tồi nếu sử dụng nếu để kết nối khách hàng của bạn. Bạn nên tạo các tài khoản của riêng mình và sử dụng chúng để kết nối với SQL của bạn. Trong mỗi kết nối, bạn đặt thông tin đăng nhập tài khoản , mật khẩucơ sở dữ liệu mặc định mà bạn muốn kết nối.


6

salà tài khoản quản trị viên hệ thống đi kèm với máy chủ sql theo mặc định. Như bạn biết có thể bạn đã biết, bạn có thể sử dụng hai cách để đăng nhập vào SQL Server.

ảnh chụp màn hình của SQL Server Management Studio

Do đó, có các chuỗi kết nối phù hợp với từng tình huống (chẳng hạn như xác thực cửa sổ, localdb, v.v.). Sử dụng https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sqlserver để xây dựng chuỗi kết nối của bạn. Đây là các thẻ XML. Bạn chỉ cần giá trị của connectionString


4

Chúng tôi chỉ cần kết nối với cơ sở dữ liệu:

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

Ví dụ:

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;"
},

Hãy thử cái này

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.