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

T-SQLを使用してSQLServerデータベースの名前を変更する方法

    SSMSGUIでSQLServerデータベースの名前を変更するには、データベース名を右クリックして名前の変更を選択します。 、場合によっては、Transact-SQLを使用して実行することをお勧めします(または必要になる場合があります)。

    T-SQLを使用してデータベースの名前を変更する最も基本的な方法は、次のとおりです。

    -- Change to the master database
    USE master;
    
    -- Change the database name
    ALTER DATABASE Films  
    Modify Name = Movies; 
    GO
    

    この基本的なスクリプトの唯一の問題は、データファイルとログファイルの名前が変更されないことです。ほとんどの場合、これらのファイルの名前を新しい名前と一致するように変更することをお勧めします。その場合、次のスクリプトを使用して、データベース名を独自の名前(およびそのファイル名とパス)に置き換えることができます。

    -- Change to the master database
    USE master;
    
    -- Change the database name
    ALTER DATABASE Films  
    Modify Name = Movies; 
    GO
    
    -- Change the logical name of the data file
    ALTER DATABASE Movies
    MODIFY FILE ( 
      NAME = 'Films', 
      NEWNAME = 'Movies' 
      );
    
    -- Change the logical name of the log file
    ALTER DATABASE Movies
    MODIFY FILE ( 
      NAME = 'Films_log', 
      NEWNAME = 'Movies_log' 
      );
    
    -- Change the physical name of the data file
    ALTER DATABASE Movies
    MODIFY FILE ( 
      NAME = 'Movies', 
      FILENAME = 'D:\mssql\data\Movies.mdf' 
      );
    
    -- Change the physical name of the log file
    ALTER DATABASE Movies
    MODIFY FILE ( 
      NAME = 'Movies_log', 
      FILENAME = 'D:\mssql\data\Movies_log.ldf' 
      );  
    
    -- Check it (View the list of database files and their locations)
    USE master;
    SELECT 
      name 'Logical Name', 
      physical_name 'File Location',
      size 'File Size'
    FROM sys.master_files;
    

    このスクリプトは、データベースの名前を変更し、データファイルとログファイルの論理名を変更してから、それらのファイルの実際の物理ファイル名を変更します。最後に、すべてのデータベースファイルとその場所のリストを選択します。これにより、ファイルの名前が実際に正しいことを確認できます。

    Linux/Macファイルパスの使用

    上記の例では、Windowsファイルパス構文(バックスラッシュとドライブ文字)を使用しています。 LinuxまたはMacを使用している場合、ファイルパスの構文は次の例のようになります(ファイルパスのみが変更され、他のすべては同じままです)。

    -- Change to the master database
    USE master;
    
    -- Change the database name
    ALTER DATABASE Films  
    Modify Name = Movies; 
    GO
    
    -- Change the logical name of the data file
    ALTER DATABASE Movies
    MODIFY FILE ( 
      NAME = 'Films', 
      NEWNAME = 'Movies' 
      );
    
    -- Change the logical name of the log file
    ALTER DATABASE Movies
    MODIFY FILE ( 
      NAME = 'Films_log', 
      NEWNAME = 'Movies_log' 
      );
    
    -- Change the physical name of the data file
    ALTER DATABASE Movies
    MODIFY FILE ( 
      NAME = 'Movies', 
      FILENAME = '/var/opt/mssql/data/Movies.mdf' 
      );
    
    -- Change the physical name of the log file
    ALTER DATABASE Movies
    MODIFY FILE ( 
      NAME = 'Movies_log', 
      FILENAME = '/var/opt/mssql/data/Movies_log.ldf' 
      );  
    
    -- Check it (View the list of database files and their locations)
    USE master;
    SELECT 
      name 'Logical Name', 
      physical_name 'File Location',
      size 'File Size'
    FROM sys.master_files;
    

    データベースの名前を変更したら、必ずマスターデータベースをバックアップしてください(T-SQLを使用してデータベースをバックアップする方法は次のとおりです)。また、スクリプトが新しいデータベース名を参照していることを確認するために必要なスクリプトをチェック/更新することもできます。


    1. t-sqlの左結合が機能しないのはなぜですか?

    2. SQLServerでのNOLOCKヒントの基本と使用法

    3. MySQL-挿入エラーを無視します:重複エントリ

    4. DAYOFYEAR()がMariaDBでどのように機能するか