Вопрос

У меня есть несколько файлов .sql, которым я должен работать, чтобы применить изменения, сделанные другими разработчиками на базе данных SQL Server 2005. Файлы называются в соответствии со следующим рисунком:

0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...

Есть ли способ запустить всех из них в одном ходу?

Это было полезно?

Решение

Создайте файл .bat со следующей командой:

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause

Разместите этот файл .bat в каталоге, с которого вы хотите выполнить файлы .sql, дважды щелкните файл .bat, и вы закончите!

Другие советы

Использовать ДЛЯ. Отказ Из командной строки:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
  1. В SQL Management Studio откройте новый запрос и введите все файлы, как показано ниже

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  2. Перейдите в меню «Запрос» на студии управления SQL и убедитесь, что режим SQLCMD включен
  3. Нажмите на режим SQLCMD; Файлы будут выбраны в серых, как показано ниже

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  4. Теперь выполнить

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

  1. Предположим, у вас есть четыре файла .sql (script1.sql,script2.sql,script3.sql,script4.sql) в папке c:\scripts.

  2. Создайте основной файл сценария (Main.sql) со следующим:

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql
    

    Сохраните main.sql в сам C: Scripts.

  3. Создать пакетный файл с именем ExecuteScripts.bat со следующим:

    SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
    PAUSE
    

    Не забудьте заменить <YourDatabaseName> С базой данных вы хотите выполнить свои сценарии. Например, если база данных «Сотрудник», команда будет следующим:

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
    
  4. Выполните пакетный файл, дважды щелкнув то же самое.

Вы могли бы использовать PROPAGATE APEXSQL. Отказ Это бесплатный инструмент, который выполняет несколько сценариев на нескольких базах данных. Вы можете выбрать столько сценариев, сколько вам нужно, и выполнить их на одну или несколько баз данных (даже несколько серверов). Вы можете создавать список скриптов и сохранить его, а затем просто выберите этот список каждый раз, когда вы хотите выполнить те же сценарии в созданном порядке (также можно добавить несколько списков сценариев):

Select scripts

Когда выбираются скрипты и базы данных, они будут отображаться в главном окне, и все, что вам нужно сделать, это нажать кнопку «Выполнить», и все сценарии будут выполняться на выбранных базах данных в данном порядке:

Scripts execution

Общий запрос

Сохраните следующие строки в блокноте с именем batch.bat.bat. и место внутри папки, где все ваш файл сценария там

 for %%G in (*.sql) do sqlcmd /S servername /d databasename  -i"%%G"
    pause

ПРИМЕР

Для %% g в (* .sql) do sqlcmd / s Nfgddd23432. / D. Emplyeedb. -Я "%% g" пауза

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

for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause

Для %% g в (* .sql) do sqlcmd / s Ne8148server. / D. Emplyeedb.Соревнованиетигр -Я "%% g" пауза

После создания файла летучей мыши внутри папки, в которой файлы сценария просто нажмите на файл Bat, ваши скрипты будут выполняться

я написал Утилита с открытым исходным кодом В C #, который позволяет перетаскивать множество файлов SQL и начать запустить их против базы данных.

Утилита имеет следующие особенности:

  • Перетащите файлы скрипта
  • Запустите каталог файлов сценариев
  • SQL Script OUT Положите сообщения во время выполнения
  • Сценарий прошел или не удалось, что цветные зеленые и красные (желтые для бега)
  • Остановитесь на опцию ошибки
  • Откройте скрипт на вариант ошибки
  • Запустите отчет со временем для каждого сценария
  • Общая продолжительность времени
  • Испытание DB соединение
  • Асинхрон
  • .Net 4 и проверено с SQL 2008
  • Один EXE-файл
  • Убить соединения в любое время

То, что я знаю, вы можете использовать команды OSQL или SQLCMD для выполнения нескольких файлов SQL. Недостаток - это то, что вам придется создать скрипт как для команд.

Использование SQLCMD для выполнения нескольких сценариев SQL Server

OSQL (это для SQL Server 2000)

http://msdn.microsoft.com/en-us/library/aaa213087(v=sql.80).aspx.

@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE

for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --host=ip --port=3306 --user=uid--password=ped < %%a
)

STEPT1: Вышеуказанные линии копия в применение, сохраните его как BAT.

Шаг2: В папке D DRIVE ABC во всех файлах SQL в запросах выполняется в SQL Server.

Шаг3: Дайте свой IP, идентификатор пользователя и пароль.

Вы можете создать один скрипт, который звонит всем остальным.

Поместите следующее в пакетный файл:

@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

Когда вы запустите этот пакетный файл, он создаст новый скрипт с именем all.sql в том же каталоге, где находится пакетный файл. Это будет искать все файлы с расширением .sql в том же каталоге, где находится пакетный файл.

Затем вы можете запустить все сценарии, используя sqlplus user/pwd @all.sql (или продлить файл партии, чтобы позвонить sqlplus После создания all.sql скрипт)

Для выполнения каждого SQLFile в том же каталоге используйте следующую команду:

ls | awk '{print "@"$0}' > all.sql

Эта команда создаст один файл SQL с именами каждого файла SQL в каталоге, добавленном «@».

После all.sql создан просто выполнение all.sql С SQLPLUS это будет выполнять каждый файл SQL в all.sql.

Если вы можете использовать Interactive SQL:

1 - Создайте файл .bat с этим кодом:

@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause

2 - Измените PWD и ServerName.

3 - Поместите файл .bat в папке, которая содержит файлы .sql и запустить его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top