간단한 C # 애플리케이션을 개발 중입니다.이 사실을 알고 싶습니다. 내 애플리케이션을 PC의 SQL Server에 연결할 때 연결 문자열 (서버 이름, 암호 등)을 알고 있지만 다른 애플리케이션에 연결할 때 PC에서 SQL Server 연결 문자열이 다릅니다. 연결할 수있는 기본 계정과 함께 제공되는 SQL Server에 공통 계정이 있습니까? sa
SQL Server의 계정에 대해 들었습니다 . 무엇 sa
입니까?
답변
.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를 참조하십시오 .
답변
실제로 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
개체 속성 에 설정된 값으로 정의됩니다 .
또한 연결된 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 사용자로 로그인 할 수 있습니다 . 이 이미지에서와 같이 :
답변
.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에 연결할 때 걱정해야 할 사항이 많습니다.
- 기기의 호스트 / IP 주소
- 초기 카탈로그 (데이터베이스 이름)
- 유효한 사용자 이름 / 암호
매우 자주 SQL 서버가 기본 인텐스로 실행될 수 있습니다. 즉, 호스트 이름 / ip 주소를 간단히 지정할 수 있지만 명명 된 인스턴스 (예 : SQL Express)로 실행되는 시나리오가 발생할 수 있습니다. 이 시나리오에서는 hostname \ instance name을 지정해야합니다.
답변
데이터베이스 서버 나 DBA는 누구도 서버의 내용을 연결하거나 수정할 수있는 것을 원하지 않는다는 것을 이해해야합니다. 이것이 보안 계정의 전체 목적입니다. 단일 사용자 이름 / 비밀번호가 모든 시스템에서 작동하는 경우 보호 기능을 제공하지 않습니다. 여러분이 들어 본 “sa”는 SQL Server 2005, 2008 또는 2012에서 작동하지 않습니다.하지만 이전 버전에 대해서는 확실하지 않습니다. SQL Server 초기 어딘가에 기본 사용자 이름과 암호는 sa / sa 였지만 더 이상 그렇지 않습니다.
참고로, 데이터베이스 보안 및 역할은 오늘날 훨씬 더 복잡합니다. Windows 기반 인증의 세부 사항을 살펴볼 수 있습니다. SQL Server가 구성되어있는 경우 연결 문자열에 사용자 이름 / 비밀번호가 필요하지 않습니다. 변경해야 할 것은 서버 컴퓨터 이름이며 두 컴퓨터 모두 동일한 db 이름을 가지고 있으면 동일한 연결 문자열이 두 컴퓨터에서 작동합니다.
답변
서버가 도메인에있는 경우 Windows 인증 또는 Sql 인증을 사용할 수 있습니다. Sa-SQL 서버 인증을위한 루트 계정 인 시스템 관리자입니다. 그러나 클라이언트 연결을 위해 if를 사용하는 것은 나쁜 습관입니다. 고유 한 계정을 만들고이를 사용하여 SQL에 연결해야합니다. 각 연결 에서 연결하려는 계정 로그인 , 비밀번호 및 기본 데이터베이스 를 설정합니다.
