Как запустить sql скрипт с помощью C# [дубликат]

10
задан Dori 3 May 2011 в 23:54
поделиться

3 ответа

Вот сообщение от MSDN, объясняющее, как это сделать с помощью SMO:

using System.Data.SqlClient;
using System.IO;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string sqlConnectionString = "Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=True";
            FileInfo file = new FileInfo("C:\\myscript.sql");
            string script = file.OpenText().ReadToEnd();
            SqlConnection conn = new SqlConnection(sqlConnectionString);
            Server server = new Server(new ServerConnection(conn));
            server.ConnectionContext.ExecuteNonQuery(script);
        }
    }
}
9
ответ дан 3 December 2019 в 17:58
поделиться

Общим способом обработки такого переноса является пучок git . См. Резервное копирование гитубского репо .

Со второго (нового) рабочего стола:

git bundle create file:///\\oldDesktop/share/myGitRepo --all

для создания одного локального файла, из которого можно будет клонировать локальное гит-репо.

Примечание: протокол file :/// будет поддерживать UNC-путь Windows (Universal Naming Convention), при этом остальная часть пути будет использовать "" / "" вместо "" \ "". См. раздел Подключение к локальной сети Windows .

-121--1573137-

Совпадение является результатом любого отдельного совпадения всего регекса. Группы и захваты имеют какое-либо отношение к группам захвата (каждая (выражение) внутри регекса), но различаются в том, как они себя ведут. Вот цитата из статьи MSDN о классе Capture, которая объясняет разницу:

Если вы не применяете квантификатор к захватывая группу, Группа Захватывает свойство возвращает коллекцию CapityCollection с одним объектом Capture, предоставляет информацию о том же захват в качестве объекта Group. Если вы это сделаете применить квантификатор к захвату группа, индекс группы, длина группы, и свойства Group.Value предоставляют информация только о последнем захваченная группа, в то время как захват объекты в коллекции CapityCollection предоставить информацию обо всех захваты субэкспрессии. Пример предоставляет иллюстрацию.

( Source )

-121--4213402-

Когда мне нужно запустить сценарии SQL, содержащие инструкции GO, я обычно считываю весь файл в строку и разделяю его на массив строк, используя GO в качестве разделителя.

Затем я подключаюсь к базе данных и выполняю каждую инструкцию по порядку.

Это довольно легко и хорошо работает. Убедитесь, что подключение к базе данных открыто во время выполнения всех инструкций. Кроме того, можно рассмотреть возможность их выполнения в транзакции.

7
ответ дан 3 December 2019 в 17:58
поделиться