sql >> データベース >  >> Database Tools >> SSMS

SQL Server Management Studioでは、SQLCMDモードとは何ですか?

    私はさらに調査を行ったので、これまでに書かれたことを拡張するためにこれを理解しました:

    SQLCMDとは

    SQLCMD.exe SQLServer2005以降のインストールに含まれているコンソールユーティリティです。通常、c:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXEのようなパスにあります。 。

    これは、SQLサーバーに関連するタスクの自動化を可能にするシンプルなスクリプト環境です。たとえば、SQL Serverの特定のインスタンスにログインするスクリプトを記述して実行し、この接続の特定のディレクトリからスクリプトを実行して、出力を特定のファイルに保存できます。

    Invoke-Sqlcmd> コマンドレットは、このツールを標準化されたPowershellベースのアプローチに置き換え、元の構文と機能のほとんどを保持する手段としてSQLServer2008で導入されました。

    SSMSのSQLCMDモードとは

    SSMSでは、SQLCMDモード は、sqlcmd.exe環境をシミュレートするスクリプト実行モードであるため、T-SQL言語の一部ではない一部のコマンドを受け入れます。sqlcmd.exeとは異なります。 、 SqlClientを使用してデータベースに接続します (SSMSと同じ方法) ODBCではありません データプロバイダーであるため、一部の側面では、sqlcmd.exeとは異なる動作をする可能性があります。 。

    SQLCMDモードでスクリプトを実行すると、sqlcmd.exeに一般的なコマンドを使用できます。 環境。ただし、SQLCMDモードにはIntelliSenseまたはデバッグのサポートがないため、クリーンなT-SQLとSQLCMD固有のコードを組み合わせたスクリプトを維持するのは面倒な場合があります。したがって、必要な場合にのみ使用してください。

    ユースケースの例

    会社に、名前に環境を含むデータベースの命名規則があるとします。例: MyDb_ Prod MyDb_テスト MyDb_ Dev 。この規則は、間違いの可能性を最小限に抑える ために使用される場合があります。 。

    開発者がT-SQLスクリプトを作成する場合、展開/テストプロセスのさまざまな環境で実行する必要があります。これには、多くのバージョンのコードが必要になります。

     SELECT *
     FROM [MyDb_Dev].[dbo].[MyTable1] -- MyDb_Dev -> MyDb_Test -> MyDb_Prod
    

    代わりに、データベース名はデプロイメントプロセスでSQLCMD変数として提供され、すべての環境にまったく同じファイルがデプロイされると想定できます。

     -- :setvar databaseName "MyDb_Dev" -- uncomment for testing in SSMS
    
     SELECT *
     FROM [$(databaseName)].[dbo].[MyTable1]
    

    (この単純な例では、データベース名を完全に省略できますが、データベース間結合がある場合は、データベース名を使用する必要があります)



    1. Ubuntu16.04にphpMyAdminをインストールして保護する方法

    2. SQL ServerManagementStudioで結果セットのスキーマを表示する

    3. PHPでデータベースを作成できず、構文が正しい

    4. MySQL-php / mysqliで超高速なこのクエリでphpMyAdminが非常に遅いのはなぜですか?