Вы можете попробовать объекты управления SQL Server (SMO - http://msdn.microsoft.com/en-us/library/ms162169.aspx),, это должно работать в вашем сценарии, выполняя сценарий sql во время процесса установки.
В этом кратком коде вы можете увидеть, как подключиться кЭкземпляр SQL-сервера, в данном случае используется Аутентификация Windows, но вы также можете использовать Аутентификацию SQL, указав в своих именах connection.Login и connection.Password. После этого устанавливаются обработчики событий, которые могут запускаться во время ( ServerMessage , InfoMessage ) и после ( StatementExecuted ) выполнения сценария. Использование ServerMessage и InfoMessage в данном случае является избыточным, поскольку ServerMessage также будет отображать информационные сообщения (серьезность ошибки <10 в SQL), но хорошо видеть, как это работает. </p>
В этом примере textBox1.Text содержит скрипт T-SQL, который выполняется с этой строкой: server.ConnectionContext.ExecuteNonQuery (textBox1.Text); оператор Execute окружен попыткой ... catch to ловить любые ошибки во время исполнения.
private void button1_Click(object sender, EventArgs e)
{
ServerConnection connection = new ServerConnection("stjepan-lap");
connection.LoginSecure = true;
Server server = new Server(connection);
server.ConnectionContext.InfoMessage += new SqlInfoMessageEventHandler(ConnectionContext_InfoMessage);
server.ConnectionContext.StatementExecuted += new StatementEventHandler(ConnectionContext_StatementExecuted);
server.ConnectionContext.ServerMessage += new ServerMessageEventHandler(ConnectionContext_ServerMessage);
//Executes T-Sql script
try
{
server.ConnectionContext.ExecuteNonQuery(textBox1.Text);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
if (ex.InnerException != null)
Debug.WriteLine(ex.InnerException.Message);
}
server.ConnectionContext.Disconnect();
}
void ConnectionContext_ServerMessage(object sender, ServerMessageEventArgs e)
{
Debug.WriteLine(e.Error);
}
void ConnectionContext_StatementExecuted(object sender, StatementEventArgs e)
{
Debug.WriteLine(e.SqlStatement);
}
void ConnectionContext_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
Debug.WriteLine(e.Message);
}
Вы должны ссылаться на dll SMO и вставлять соответствующие символы в ваш файл кода
Microsoft.SqlServer.Smo.dll
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Management.Sdk.Sfc.dll
....
using System;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;