SQL Server Management Studio 2005: 保存プロシージャを全てスクリプト化する方法【完全ガイド】
SQL Server Management Studio 2005で保存プロシージャをすべてスクリプト化する
SQL Server Management Studio (SSMS) 2005を使用して、データベース内のすべての保存プロシージャをスクリプト化する方法はいくつかあります。
方法
オブジェクト エクスプローラーを使用する
- SSMS 2005を起動し、対象となるデータベースに接続します。
- オブジェクト エクスプローラーで、データベース > プログラム可能性 > 保存プロシージャ を展開します。
- スクリプト化する保存プロシージャをすべて選択します。
- 右クリックして、スクリプトの作成 > 選択したオブジェクトをファイルに を選択します。
- スクリプトの生成 ダイアログボックスで、出力オプションを選択します。
- OK をクリックして、スクリプトファイルを保存します。
クエリ エディターを使用する
- SSMS 2005で新しいクエリ エディター ウィンドウを開きます。
- 次のクエリを実行します。
USE <データベース名>
GO
SELECT
ROUTINE_NAME,
ROUTINE_DEFINITION
FROM
INFORMATION_SCHEMA.ROUTINES
WHERE
ROUTINE_TYPE = 'PROCEDURE'
ORDER BY
ROUTINE_NAME;
- クエリ結果をファイルに保存します。
T-SQL スクリプトを使用する
- 次の T-SQL スクリプトをファイルに保存します。
USE <データベース名>
GO
DECLARE @sql nvarchar(max)
SET @sql = N''
SELECT
@sql = @sql + N'GO' + CHAR(13) + CHAR(10) +
ROUTINE_DEFINITION
FROM
INFORMATION_SCHEMA.ROUTINES
WHERE
ROUTINE_TYPE = 'PROCEDURE'
ORDER BY
ROUTINE_NAME;
EXEC sp_executesql @sql
GO
- SSMS 2005でスクリプトを実行します。
注意事項
- 上記の方法はいずれも、データベースのスキーマのみをスクリプト化します。 データは含まれません。
- スクリプトを実行する前に、必ずバックアップを取るようにしてください。
USE AdventureWorks2019
GO
SELECT
ROUTINE_NAME,
ROUTINE_DEFINITION
FROM
INFORMATION_SCHEMA.ROUTINES
WHERE
ROUTINE_TYPE = 'PROCEDURE'
ORDER BY
ROUTINE_NAME;
USE AdventureWorks2019
GO
DECLARE @sql nvarchar(max)
SET @sql = N''
SELECT
@sql = @sql + N'GO' + CHAR(13) + CHAR(10) +
ROUTINE_DEFINITION
FROM
INFORMATION_SCHEMA.ROUTINES
WHERE
ROUTINE_TYPE = 'PROCEDURE'
ORDER BY
ROUTINE_NAME;
EXEC sp_executesql @sql
GO
出力例
USE AdventureWorks2019
GO
-- 以下のコードはサンプルです。実際の出力は異なる場合があります。
GO
CREATE PROCEDURE [dbo].[uspGetEmployeeByHireDate]
@HireDate datetime
AS
BEGIN
SELECT
*
FROM
HumanResources.Employee
WHERE
HireDate = @HireDate;
END
GO
GO
CREATE PROCEDURE [dbo].[uspUpdateEmployeeSalary]
@EmployeeID int,
@NewSalary money
AS
BEGIN
UPDATE
HumanResources.Employee
SET
Salary = @NewSalary
WHERE
EmployeeID = @EmployeeID;
END
GO
...
SQL Server Management Studio 2005で保存プロシージャをすべてスクリプト化する他の方法
SQL Server Management Studio 2005 の機能を拡張するサードパーティ製ツールがいくつかあります。 これらのツールの中には、保存プロシージャをスクリプト化する機能が含まれているものがあります。
代表的なツール
- ApexSQL Script
- Red Gate SQL Prompt
- dbForge Schema Compare for SQL Server
PowerShell を使用して、保存プロシージャをスクリプト化するカスタム スクリプトを作成できます。
PowerShell スクリプトの例
# PowerShell を使用して SQL Server の保存プロシージャをすべてスクリプト化するスクリプト
# 使用する SQL Server インスタンスの名前
$serverName = 'localhost'
# 接続するデータベースの名前
$databaseName = 'AdventureWorks2019'
# 保存プロシージャを格納するフォルダー
$outputFolder = 'C:\Temp\Scripts'
# SQL Server に接続
$connection = New-Object Microsoft.SqlServer.Management.Smo.Server($serverName)
# データベースに接続
$database = $connection.Databases[$databaseName]
# すべての保存プロシージャを取得
$storedProcedures = $database.StoredProcedures
# すべての保存プロシージャをスクリプト化する
foreach ($storedProcedure in $storedProcedures) {
$script = $storedProcedure.Script()
$scriptPath = Join-Path $outputFolder $storedProcedure.Name + '.sql'
Set-Content $scriptPath $script
}
# 接続を閉じる
$connection.Disconnect()
Transact-SQL バッチファイルを作成して、保存プロシージャをすべてスクリプト化できます。
Transact-SQL バッチファイルの例
USE AdventureWorks2019
GO
DECLARE @sql nvarchar(max)
SET @sql = N''
SELECT
@sql = @sql + N'GO' + CHAR(13) + CHAR(10) +
ROUTINE_DEFINITION
FROM
INFORMATION_SCHEMA.ROUTINES
WHERE
ROUTINE_TYPE = 'PROCEDURE'
ORDER BY
ROUTINE_NAME;
EXEC sp_executesql @sql
GO
SSIS パッケージの例
- 新しい SSIS パッケージを作成します。
- データ フロー タスクを追加します。
- データ フロー タスクで、OLE DB ソースとファイル システム デスティネーションを使用します。
- OLE DB ソースを構成して、INFORMATION_SCHEMA.ROUTINES ビューからデータを読み取ります。
- ファイル システム デスティネーションを構成して、保存プロシージャのスクリプトをファイルに書き込みます。
sql-server ssms