#c# #sql #sql-server-2008
#c# #sql #sql-server-2008
Вопрос:
Я хочу написать скрипт, который позволит мне подключиться к базе данных sql, создать базу данных в текстовом файле, а затем удалить всю базу данных. Как только это будет сделано, я хотел бы иметь возможность воссоздать всю базу данных. Возможно ли это?
Комментарии:
1. Когда вы говорите «воссоздать базу данных», вам все еще нужны данные или просто схема объекта?
2. В чем смысл? (т. Е., Пожалуйста, объясните мотивацию, могут быть более простые способы достижения вашей конечной цели)
3. это так, но это много работы. Вам нужно выполнить итерацию по нескольким процедурам … триггерам … просмотру … сохраненным процедурам… таблицы … функции… пользователи … и т.д… Почему бы не сделать резервную копию и не восстановить то, для чего она предназначена.
Ответ №1:
Вы можете использовать Microsoft.SqlServer.Management.Smo
пространство имен для создания сценария, как и в ssms. Может потребоваться несколько попыток, чтобы правильно настроить параметры сценариев, поэтому не переусердствуйте и сразу же начинайте удалять вещи.
Чтобы воссоздать, используйте то же пространство имен для выполнения скрипта. Использование обычного ExecuteNonQuery
не будет работать, потому что сценарий будет содержать «GO», который не является допустимым sql. SMO содержит логику для обработки этого.
FileInfo file = new FileInfo("C:\script.sql");
string script = file.OpenText().ReadToEnd();
SqlConnection connection = new SqlConnection(connectionString);
Server server = new Server(new ServerConnection(connection ));
server.ConnectionContext.ExecuteNonQuery(script);
Конечно, предполагается, что для входа в систему используется пользователь, имеющий соответствующие разрешения на сервере sql.
Ответ №2:
- Управление проектами баз данных с помощью Visual Studio 2010
- Создание объектов SQL Server в управляемом коде
- Работа с проектами баз данных
с помощью этого вы можете воссоздать базу данных по требованию.