런타임에 SQL Server Express 2008을 만드는 코드를 가지고 데이터베이스에 연결하려고 시도합니다 Transact-SQL의 초기화 스크립트 데이터베이스를 작성하는 코드는 다음과 같습니다.C# 코드로 SQL Express 2008 데이터베이스를 만들지 만 sysadmin과 연결하려고하면 로그인에 실패 함
private void CreateDatabase()
{
using (var connection = new SqlConnection(
"Data Source=.\\sqlexpress;Initial Catalog=master;" +
"Integrated Security=true;User Instance=True;"))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText =
"CREATE DATABASE " + m_databaseFilename +
" ON PRIMARY (NAME=" + m_databaseFilename +
", FILENAME='" + this.m_basePath + m_databaseFilename + ".mdf')";
command.ExecuteNonQuery();
}
}
}
데이터베이스가 성공적으로 작성되었습니다. 그 후, 나는 다음과 같은 코드를 사용하여 초기화 스크립트를 실행하기 위해 데이터베이스에 연결을 시도 : 그러나
private void ExecuteQueryFromFile(string filename)
{
string queryContent = File.ReadAllText(m_filePath + filename);
this.m_connectionString = string.Format(
@"Server=.\SQLExpress; Integrated Security=true;Initial Catalog={0};", m_databaseFilename);
using (var connection = new SqlConnection(m_connectionString))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText = queryContent;
command.CommandTimeout = 0;
command.ExecuteNonQuery();
}
}
}
을의 connection.Open() 문은 다음과 같은 예외 던지기, 실패
을데이터베이스에서 "TestData" 을 열 수 없습니다. 로그인 이 (가) 실패했습니다. 사용자 'MYDOMAIN \ myusername'에 대한 로그인에 실패했습니다.
연결하려는 계정에 sysadmin 권한이있어이 데이터베이스에 연결할 수 있어야합니다 (master 데이터베이스 연결을 사용하여 데이터베이스를 만들 수 있음). 첫 번째 장소).
당신이 옳습니다.차이점을 알지 못했습니다. 두 연결에서 User Instance = true를 적용하면 작동합니다. 고맙습니다! – andragon