SQL Server 연결 문자열을 설정하는 방법은 무엇입니까?


93

간단한 C # 애플리케이션을 개발 중입니다.이 사실을 알고 싶습니다. 내 애플리케이션을 PC의 SQL Server에 연결할 때 연결 문자열 (서버 이름, 암호 등)을 알고 있지만 다른 애플리케이션에 연결할 때 PC에서 SQL Server 연결 문자열이 다릅니다. 연결할 수있는 기본 계정과 함께 제공되는 SQL Server에 공통 계정이 있습니까? saSQL Server의 계정에 대해 들었습니다 . 무엇 sa입니까?


5
기본 계정 사용자 이름과 암호를 사용하여 SQL Server 또는 해당 문제에 대한 연결 유형에 대한 액세스를 설정하고 싶지 않습니다.
jordanhill123 2013 년

4
SA평균 SQL 서버 sys_admin역할
엘스

2
SQL Server 인증 대신 Windows 인증을 사용할 수 있습니까? 그러면 사용자 ID와 암호를 모두 사용할 필요가 없습니다.
Philip Sheard 2013 년

답변:


128

.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

1
@Wairimu Murigi 당신은 백 슬래시 즉, 사용자 ID = 도메인 \\ UNAME 탈출해야
존 하틀리

1
@Itachi : necropost 죄송합니다. SQLCMD를 사용하여 Windows 명령 줄에 입력합니까?
MSIS

1
내 비밀번호에 ;문자 가 포함되어 있습니다
Kiquenet

1
당신은 그것을 포장 단일 또는 이중 따옴표를 시도 할 수 @Kiquenet 확인 밖으로.
Itachi

30

실제로 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개체 속성 에 설정된 값으로 정의됩니다 .

또한 연결된 DB와 Microsoft Visual Studio의 연결에서 데이터베이스 연결 문자열을 가져올 수 있습니다. DB를 선택하면 속성 패널에 연결 문자열 이 표시 됩니다.

SqlConnectionStringBuilder클래스 의 전체 속성 목록은 Microsoft MSDN 사이트 의이 페이지에 나열되어 있습니다.

SQL Server의 기본 사용자에 대해 sa 는 "시스템 관리자"를 의미하며 해당 암호는 SQL Server 버전에 따라 다릅니다. 이 페이지 에서 암호가 어떻게 다른지 확인할 수 있습니다.

SQL Server 2008 / R2 Express 사용자 : sa 암호 : [빈 암호-연결하려면 필드를 비워 두십시오.]

SQL Server 201x Express 사용자 : sa 암호 : Password123

SQL Server 20xx 웹 또는 표준 사용자 : sa 암호 : VDS가 프로비저닝 될 당시의 관리자 또는 루트 사용자 암호와 동일합니다.

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

11

다음과 같이 연결 문자열을 사용할 수 있으며 데이터베이스 이름 만 추가하면됩니다.

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

8

다른 컴퓨터에서 SQL Server에 연결할 때 걱정해야 할 사항이 많습니다.

  • 기기의 호스트 / IP 주소
  • 초기 카탈로그 (데이터베이스 이름)
  • 유효한 사용자 이름 / 암호

매우 자주 SQL 서버가 기본 인텐스로 실행될 수 있습니다. 즉, 호스트 이름 / ip 주소를 간단히 지정할 수 있지만 명명 된 인스턴스 (예 : SQL Express)로 실행되는 시나리오가 발생할 수 있습니다. 이 시나리오에서는 hostname \ instance name을 지정해야합니다.


6

데이터베이스 서버 나 DBA는 누구도 서버의 내용을 연결하거나 수정할 수있는 것을 원하지 않는다는 것을 이해해야합니다. 이것이 보안 계정의 전체 목적입니다. 단일 사용자 이름 / 비밀번호가 모든 시스템에서 작동하는 경우 보호 기능을 제공하지 않습니다. 여러분이 들어 본 "sa"는 SQL Server 2005, 2008 또는 2012에서 작동하지 않습니다.하지만 이전 버전에 대해서는 확실하지 않습니다. SQL Server 초기 어딘가에 기본 사용자 이름과 암호는 sa / sa 였지만 더 이상 그렇지 않습니다.

참고로, 데이터베이스 보안 및 역할은 오늘날 훨씬 더 복잡합니다. Windows 기반 인증의 세부 사항을 살펴볼 수 있습니다. SQL Server가 구성되어있는 경우 연결 문자열에 사용자 이름 / 비밀번호가 필요하지 않습니다. 변경해야 할 것은 서버 컴퓨터 이름이며 두 컴퓨터 모두 동일한 db 이름을 가지고 있으면 동일한 연결 문자열이 두 컴퓨터에서 작동합니다.


1
sa는 SQL Server의 sysadmin 계정입니다. SQL Server 인증 또는 혼합 모드 인증과 함께 설치된 경우 sa 계정을 설정해야합니다. 나중에 참조 할 수 있도록 SQL Server 인증이 설정된 상태로 설치되지 않은 경우 sa 계정을 설정하는 방법에 대한 가이드 가 있습니다.
iCodeSometime

6

서버가 도메인에있는 경우 Windows 인증 또는 Sql 인증을 사용할 수 있습니다. Sa-SQL 서버 인증을위한 루트 계정 인 시스템 관리자입니다. 그러나 클라이언트 연결을 위해 if를 사용하는 것은 나쁜 습관입니다. 고유 한 계정을 만들고이를 사용하여 SQL에 연결해야합니다. 각 연결 에서 연결하려는 계정 로그인 , 비밀번호기본 데이터베이스 를 설정합니다.


6

sa기본적으로 SQL Server와 함께 제공되는 시스템 관리자 계정입니다. 이미 알고 계시 겠지만 두 가지 방법으로 SQL Server에 로그인 할 수 있습니다.

SQL Server Management Studio의 스크린 샷

따라서 각 시나리오 (예 : Windows 인증, localdb 등)에 적합한 연결 문자열이 있습니다. 사용 https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sqlserver를 연결 문자열을 구축 할 수 있습니다. XML 태그입니다. connectionString의 값이 필요 합니다.


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

이거 한번 해봐

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.