Скрипт всей базы данных SQL-Server
есть ли способ, которым я могу получить сценарий всех таблиц, процессов и других объектов из базы данных? Я знаю, что есть возможность написать сценарий базы данных, но это только дало мне какой-то скрипт верхнего уровня, конечно, не скрипт для создания всех таблиц, процессов, udfs .так далее.
7 ответов:
Из Management Studio Щелкните правой кнопкой мыши на базе данных. Задачи - > Создание Сценариев.
Это должно сделать это.
Я написал утилиту командной строки с открытым исходным кодом под названием SchemaZen что делает это. Это намного быстрее, чем сценарии из management studio, и его выход более удобен для управления версиями. Он поддерживает сценарии как схемы, так и данных.
для генерации скриптов выполните:
schemazen.exe script --server localhost --database db --scriptDir c:\somedirзатем для воссоздания базы данных из скриптов выполните:
schemazen.exe create --server localhost --database db --scriptDir c:\somedir
Я написал утилиту для этой задачи, SMOscript.
генерация скриптов выполняется библиотекой SMO и поддерживает новые типы объектов в SQL 2005 и 2008.
в итоге мы использовали комбинацию генерации сценариев SSMS для извлечения схемы и данных, а затем использовали наш собственный инструмент базы данных, который позволяет анализировать ключевые слова и заменять токены в сценариях. Это также гарантирует, что сценарии применяются только один раз.
почему?
- мы должны поддерживать установки на SQL Server 2000, 2005 и 2008, и есть изменения в типах данных между версиями, например, 2005+ имеют nvarchar(max), тогда как 2000 поддерживает только ntext. Так что наши скрипты используйте маркер и на основе выбора БД заменяет правильный тип.
- выполнение некоторых скриптов требует периода ожидания после выполнения, например, мы обнаружили, что если вы не ждали несколько секунд после создания новых баз данных с помощью скрипта, SQL Server может иногда терпеть неудачу (потому что у него не было времени для создания файлов БД), когда он продолжал создавать таблицы и т. д.
- мы хотели сохранить историю того, какие скрипты были выполнены и когда.
- мы хотели разрешить наш установщик Wix MSI для указания строки подключения и учетных данных, и нужен был какой-то способ передать их в Скрипты, поэтому еще раз, используя токены и некоторую условную логику.
пример скрипта (отредактирован для краткости)
-- Sleep: 5 -- Sleep after creating database to allow file system to create db files CREATE DATABASE [$Database$] GO EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$ GO USE [$Database$] GO IF '1'!='$IntegratedSecurity$' BEGIN CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$] CREATE USER [$User$] FOR LOGIN [$Login$] EXEC sp_addrolemember N'db_owner', N'$User$' END GO
Я рекомендую посмотреть на RedGate SQL packager. Это не бесплатно, но было достаточно полезно, чтобы стоить того.
просто глядя на данные таблицы, чтобы вывести все содержимое данных таблицы в Management Studio 2012 и 2014, это немного скрыто, но я нашел вариант после некоторого просмотра:
- щелкните правой кнопкой мыши на БД
- Выберите "Задачи" > " Создание Сценариев...-
- на "Set Scripting Options", нажмите кнопку "Дополнительно"
- В разделе "Общие" установите для параметра "типы данных для сценария" значение true (оно находится в нижней части группы "общие")
Если вам нужно сделать это программно, вы можете использовать библиотеку SQL DMO (OLE) против SQL Server 2000, но, скорее всего, вы можете использовать библиотеку SQL SMO (собственные библиотеки .NET) против SQL Server 2005 и более поздних версий.
обе эти библиотеки являются неотъемлемой частью установки средств администрирования SQL Server.
Это в том случае, если создание полного сценария базы данных из среды SQL Server Management Studio является недостаточным.
Comments