sql >> データベース >  >> RDS >> Sqlserver

T-SQL を使用して複数のデータベースを接続する

    SQLCMD モードを使用すると、次のスクリプトを簡単に作成できます:

    :setvar dbname YourDatabaseName
    :setvar dbfile N'E:\DATA\YourDatabase.mdf'
    :setvar logfile N'E:\TLOG\YourDatabase_log.ldf'
    USE [master]
    GO
    
    CREATE DATABASE $(dbname) ON 
    ( FILENAME = $(dbfile) ),
    ( FILENAME = $(logfile) )
    FOR ATTACH
    GO
      

    これは sqlcmd.exe から動作します コマンドラインから (変数 dbname, dbfile, logfile の値を指定することもできます) コマンド ラインからも)、または Tools > Options > Query Execution > by default, open new queries in SQLCMD mode を有効にすると、SQL Server Management Studio で動作します .

    SQLCMD ユーティリティとそのすべてのパラメーターについて詳しく読む MSDN で。

    PS:もちろん、SQLCMD を有効にしたスクリプトを使用したこのアプローチは、BACKUP/RESTORE サイクルでも機能します :-) (Aaron が推奨)

    PPS:適切な命名規則があり、データ ファイルが常に $(dbname).mdf である場合 ログファイルは常に $(dbname)_log.ldf です 、この短縮された SQLCMD スクリプトを使用することもできます:

    :setvar dbname YourDatabaseName
    USE [master]
    GO
    
    CREATE DATABASE $(dbname) ON 
    ( FILENAME = N'E:\DATA\$(dbfile).mdf' ),
    ( FILENAME = N'E:\TLOG\$(logfile)_log.ldf' )
    FOR ATTACH
    GO
      

    次に、コマンドラインからこれを呼び出します:

    C:\>  sqlcmd.exe -S yourserver -E -i attach.sql -v dbname=YourDb1
      

    など、データベースごとに 1 回、再接続する必要があります。

    PPPS:バックアップを復元したい場合は、もう少し複雑です:

    :setvar dbname YourDatabaseName
    USE [master]
    GO
    
    RESTORE DATABASE $(dbname)
    FROM DISK = N'E:\Backup\$(dbname).bak' 
    WITH FILE = 1,  
    MOVE N'$(dbname)' TO N'E:\DATA\$(dbname).mdf',  
    MOVE N'$(dbname)_Log' TO N'E:\TLOG\$(dbname)_Log.ldf',  
    NOUNLOAD, REPLACE
    GO
      

    .bak という名前を付けている限り、これは機能します データベース名と同じファイルを作成し、それらを固定の場所に配置します (E:\Backup と仮定しました)。 ここ - 必要に応じて調整してください)。



    1. SQLを介した組み合わせの列挙

    2. NetbeansのSSH経由でMySqlデータベースに接続します

    3. MySQLとMariaDBで大量のデータを処理する

    4. mysqlコマンドDELIMITERの実行方法