Итак, попробуем создать один командный файл, чтобы автоматически запустить все сценарии для создания совершенно новой версии базы данных Novelty на другом компьютере. Хотя новая версия базы данных будет иметь собственные данные о клиентах, сотрудниках и заказах, данные о товарах в таблице tblInventory будут одинаковыми. Для этого в новой базе данных нужно наполнить таблицу tblInventory данными о товарах из уже существующей таблицы tblInventory.
Чтобы создать командный файл загрузки данных о товарах из существующей базы данных в новую, необходимо сначала экспортировать данные, а затем продолжить процесс создания командного файла.
1. В окне Server Explorer щелкните правой кнопкой мыши на таблице tblInventory и выберите в контекстном меню команду Export Data (Экспорт данных).
2. В диалоговом окне Browse for Folder выберите предлагаемую по умолчанию папку Create Scripts проекта базы данных и щелкните на кнопке OK.
3. После регистрации в диалоговом окне SQL Server Login будет создан файл dbo.tblInventory.dat.
4. Выберите папку в проекте базы данных для сохранения нового командного файла. В данном примере для этого используется предлагаемая по умолчанию папка Create Scripts.
5. В окне Solution Explorer щелкните правой кнопкой мыши на папке Create Scripts и выберите в контекстном меню команду Create Command File (Создать командный файл). На экране появится диалоговое окно Create Command File (рис. 8.11).
Рис. 8.11. Диалоговое окно Create Command File для базы данных Novelty
6. В списке Available Scripts (Доступные сценарии) в диалоговом окне Create Command File перечислены все сценарии SQL в выбранной папке, которые можно включить в командный файл. В список Scripts to be added to the command file (Сценарии, включаемые в командный файл) можно вставить все или только некоторые сценарии. Для включения всех сценариев щелкните на кнопке Add Аll (Включить все).
7. Поскольку в списке сценариев находится по крайней мере один сценарий экспорта данных с расширением. tab, в диалоговом окне Create Command File станет активной кнопка Add Data (Включить данные).
8. Щелкните на кнопке Add Data, и на экране отобразится одноименное диалоговое окно (рис. 8.12). В этом окне перечислены все выбранные сценарии создания таблиц и соответствующие им файлы данных.
РИС. 8.12. Диалоговое окно Add Data
9. В этом примере автоматически задается соответствие между файлом данных dbo.Inventory.dat и сценарием dbo.Inventory.tab. Для возвращения в диалоговое окно Create Command File щелкните на кнопке OK.
10. После указания сценариев и файлов данных щелкните на кнопке OK для создания командного файла. В результате этого в папке Create Scripts появится файл Create Scripts.cmd, содержимое которого показано в листинге 8.1.
ЛИСТИНГ 8.1. Содержимое командного файла Create Scripts.cmd
@echo off
REM: Command File Created by Microsoft Visual Database Tools
REM: Date Generated: 8/29/2002
REM: Authentication type: Windows NT
REM: Usage: CommandFilename [Server] [Database]
if '%1' == '' goto usage
if '%2' == '' goto usage
if '%1' == '/?' goto usage
if '%1' == '-?' goto usage
if '%1' == '?' goto usage
if '%1' == '/help' goto usage
osql -S %1 -d Master -E -b -i "JACKIE-TECRA.Novelty.DBS"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d Master -E -b -i "Novelty.DBS"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblCustomer.tab"
if %ERRORLEVEL% NEQ 0 goto errors
bcp "%2.dbo.tblCustomer" in "dbo.tblCustomer.dat" -S %1 -T -k -n – q
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 %2 E -b -i "dbo.tblDepartment.tab"
if %ERRORLEVEL% NEQ 0 goto errors
bcp "%2.dbo.tblDepartment" in "dbo.tblDepartment.dat" -S %1 – Т -k – n – q
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 – d %2 – E -b -i "dbo.tblEmployee.tab"
if %ERRORLEVEL% NEQ 0 goto errors
bcp "%2.dbo.tblEmployee" in "dbo.tblEmployee.dat" – S %1 – Т -k – n -q
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblInventory.tab"
if %ERRORLEVEL% NEQ 0 goto errors
bcp "%2.dbo.tblInventory" in "dbo.tblInventory.dat" -S %1 -Т -k
if %ERRORLEVEL% NEQ 0 goto errors
osql – S %1 – d %2 – E – b -i "dbo.tblOrder.tab"
if %ERRORLEVEL% NEQ 0 goto errors
bcp "%2.dbo.tblOrder" in "dbo.tblOrder.dat" -S %1 -T -k -n -q
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblOrderItem.tab"
if %ERRORLEVEL% NEQ 0 goto errors
bcp "%2.dbo.tblOrderItem" in "dbo.tblOrderItem.dat" -S %1 -T -k -n -q
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblRegion.tab"
if %ERRORLEVEL% NEQ 0 goto errors
bcp "%2.dbo.tblRegion" in "dbo.tblRegion.dat" -S %1 -T -k -n -q
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblCustomer.kci"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblDepartment.kci"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblEmployee.kci"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tbllnventory.kci"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblOrder.kci"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblOrderItem.kci"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblRegion.kci"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblCustomer.fky"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblDepartment.fky"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblEmployee.fky"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblInventory.fky"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblOrder.fky"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblOrderItem.fky"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblRegion.fky"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblCustomer.ext"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblDepartment.ext"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblEmployee.ext"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblInventory.ext"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblOrder.ext"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblOrderItem.ext"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.tblRegion.ext"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.EmployeeDepartment_view.viw"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.qryEmployee_view.viw"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.DeleteEmployee.prc"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.GetCustomerFromID.prc"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.InsertEmployee.prc"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.LastNameLookup.prc"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.procEmployeesSorted.prc"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.SelectEmployees.prc"
if %ERRORLEVEL% NEQ 0 goto errors
osql -S %1 -d %2 -E -b -i "dbo.UpdateEmployee.prc"
if %ERRORLEVEL% NEQ 0 goto errors
goto finish
REM: How to use screen
:usage
echo.
echo Usage: MyScript Server Database
echo Server: the name of the target SQL Server
echo Database: the name of the target database
echo.
echo Example: MyScript.cmd MainServer MainDatabase
echo.
echo.
goto done
REM: error handler
:errors
echo.
echo WARNING! Error(s) were detected!
echo____________________
echo Please evaluate the situation and, if needed,
echo restart this command file. You may need to
echo supply command parameters when executing
echo this command file.
echo.
pause
goto done
REM: finished execution
:finish
echo.
echo Script execution is complete!
:done
@echo on
НА ЗАМЕТКУ
В данном командном файле используются утилиты командной строки osql и bcp которые входят в состав SQL Server. Утилита osql предназначена для выполнения команд SQL, системных процедур и сценариев, а утилита bcp — для пакетного копирования данных в файл данных из SQL Server и обратно.
Данный командный файл можно запустить в окне Solution Explorer, щелкнув на нем правой кнопкой мыши и выбрав в контекстном меню команду Run. Его также можно выполнить извне, независимо от Visual Studio .NET, аналогично другим командным файлам.
СОВЕТ
Учтите, что при запуске данного командного файла по отношению к базе данных в ней будут удалены все данные!
Запросы
Аналогично сценариям создания и изменения, с помощью Visual Studio .NET можно генерировать запросы. За исключением тривиальных запросов, конструктор запросов с графическим пользовательским интерфейсом позволяет более эффективно и безошибочно создавать самые сложные запросы.
Далее работа в режиме конструктора запросов демонстрируется на примере создания параметрического запроса на обновление, который обновляет оптовые цены всех товаров на складе на указанную в процентах величину.
РИС. 8.13. Режим конструктора запросов с диалоговым окном Add Table
1. Откройте окно Solution Explorer и щелкните правой кнопкой мыши на любой папке, за исключением Database References. В контекстном меню выберите команду Add Query (Создать запрос), и на экране отобразится диалоговое окно Add New Item (Создать новый объект), показанное на рис. 8.2.