最近の SQL スクリプトで、パラメーターを使用してデータ ファイルとログ ファイルを作成するためのパスを指定しようとしました。ただし、「@DataFilePath」付近の構文が間違っているため、エラーが発生しました。問題を調査し、実行可能な解決策を提供しましょう。
CREATE DATABASE の構文は、パラメーターの直接使用をサポートしていません。この制限を克服するには、動的 SQL を使用できます。
動的 SQL を使用すると、文字列変数 (@sql) を使用して実行時に SQL ステートメントを構築できます。パス値を @sql に連結することで、パラメータ化された CREATE DATABASE ステートメントを作成できます。
-- Declare variables DECLARE @DataFilePath AS NVARCHAR(MAX) DECLARE @LogFilePath AS NVARCHAR(MAX) -- Set path values SET @DataFilePath = N'C:\ProgramData\Gemcom\' SET @LogFilePath = N'C:\ProgramData\Gemcom\' -- Construct dynamic SQL statement SELECT @sql = 'CREATE DATABASE TestDB ON PRIMARY ( NAME = ''TestDB_Data'', FILENAME = ' + QUOTENAME(@DataFilePath) + ') LOG ON ( NAME = ''TestDB_Log'', FILENAME = ' + QUOTENAME(@LogFilePath) + ')' -- Execute dynamic SQL EXEC (@sql)
QUOTENAME() 関数は、次のことを保証します。パス値は、SQL ステートメントで使用するために適切に引用符で囲まれています。これにより、パス内の特殊文字やスペースによって引き起こされるエラーが防止されます。
動的 SQL とパラメータ化されたパス値を利用することで、パラメータを使用して SQL スクリプトでデータベースとログ ファイルのファイルパスを正常に指定できます。
以上がSQL でデータベースを作成するときにパラメーターを使用してファイル パスを指定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。