사용자 지정 작업을 사용하여 Visual Studio 2010 웹 설치 프로젝트에서 새 데이터베이스를 만들려고합니다. 먼저 사용자가 자신의 SQL Server 이름과 인증 모드를 선택합니다. 다음을 사용하여 서버 이름을 얻습니다.MVC SMOLite를 사용하여 SQL 데이터베이스를 만듭니다.
public string ServerString { get; set; }
private void SetServerString()
{
string cs;
if (cbInstant.SelectedIndex == 0) // windows authentication
cs = cbServer.SelectedValue.ToString();
else
cs = string.Format(cbServer.SelectedValue + ";" + txtUser.Text + ";" + txtPassword.Text);
ServerString = cs;
}
private void btnNext_Click(object sender, EventArgs e)
{
SetServerString();
formContext.Parameters["ServerString"] = this.ServerString;
this.Close();
}
잘 작동하고 예를 들어 "PCName \ SQLEXPRESS"를 얻습니다. 사용자 지정 작업에
:
public override void Install(System.Collections.IDictionary stateSaver)
{
string serverString = "";
if (this.Context.Parameters["ServerString"] != null)
serverString = this.Context.Parameters["ServerString"];
base.Install(stateSaver);
MakeSQLDatabase(connectionString);
}
private void MakeSQLDatabase(string serverString)
{
FileInfo file = new FileInfo("M:\\script.sql");
string script = file.OpenText().ReadToEnd();
file.OpenText().Close();
SqlConnection sqlConnection = new SqlConnection();
SqlConnectionStringBuilder sqlConnectionStringBuilder = new SqlConnectionStringBuilder();
sqlConnection.ConnectionString = sqlConnectionStringBuilder.ToString();
Server server = new Server(sqlConnection);
server.ConnectionContext.ServerInstance = (serverString);
server.ConnectionContext.Connect();
if (server.Databases["databasename"] != null)
{
server.KillAllProcesses("databasename");
server.KillDatabase("databasename");
}
Database database = new Database(server, "databasename");
database.Create();
database.ExecuteNonQuery(script);
}
은 내가
@"PCName\SQLEXPRESS"
작동
에 변수 serverString을 변경하지만 경우, 오류 "서버를 찾을 수 없거나 accessiable되지 않았다"를 얻을! 나는 문제가 무엇인지 알 수 없다. 버전 2와 버전 4 사이에 충돌해도 나는 당신의 도움을 부탁드립니다
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
app.confg
를 추가로 있기 때문에 나는 Microsoft.SqlServer.Management.Smo를 사용하지 수, 또는 당신은 저를 안내 할 수 있습니다 이 작업을 수행하기위한 더 나은 솔루션. 미리 감사드립니다.
이것은 4.0 응용 프로그램을 설치하는 웹 설치 응용 프로그램입니다. SMO 또는 SMOLite를 사용하려면 두 가지 선택이있었습니다. 어떻게하면 서버에 연결하고 데이터베이스를 만들었는지 나와 공유 할 수 있다면 고맙겠습니다. 감사합니다 – hncl
@ user373721 내가하는 방식을 명확하게하기 위해 내 게시물을 업데이 트 – YvesR
샘플의 첫 번째 줄은 SQL 0 ""; 오류가 발생했습니다. 이것은 분명히 성명서가 아닙니다. 감사합니다 – hncl