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

SQL Serverデータベース(T-SQL)からデータファイルを削除する方法

    SQL Serverデータベースは、データとオブジェクトをファイルに格納します。各データベースには少なくとも1つのデータファイル(およびログファイル)がありますが、1つだけに限定されるわけではなく、多くのデータファイルが含まれる可能性があります。データベースからデータファイルを削除する必要がある場合は、削除する前に、まずそのファイルを空にする必要があります。

    ただし、ファイルを空にしても実際にはデータが削除されるわけではないので、心配しないでください。ファイルのデータを同じファイルグループ内の他のファイルに移行するだけです。

    以下の例は、データファイルを空にしてから、Transact-SQLを使用してデータベースから削除する方法を示しています。

    簡単な例

    データファイルを空にしてデータベースから削除する方法を示す簡単な例を次に示します。

    -- Empty the file
    DBCC SHRINKFILE (Solutions2, EMPTYFILE);  
    GO 
    
    -- Remove the file
    ALTER DATABASE Solutions  
    REMOVE FILE Solutions2;  
    GO
    

    説明したように、これによりファイルが空になり、データベースから完全に削除されます。 EMPTYFILEを使用する場合 、これにより、すべてのデータがファイルから同じファイルグループ内の他のファイルに移動します。したがって、これがファイルグループ内の唯一のファイルではないことを確認する必要があります(そうしないと、エラーが発生します)。 EmptyFileは、ファイルに新しいデータが追加されないことも保証します。

    より長い例

    前の例で混乱した場合は、新しいデータベースを作成し、新しいデータファイルを追加し、それを空にしてから削除するプロセスを見ていきましょう。

    データベースを作成してそのデータファイル情報を表示する

    -- Switch to the master database
    USE master;
    GO
    
    -- Create a new database
    CREATE DATABASE Test;
    GO
    
    -- View it's data file and log file info
    USE Test;  
    GO  
    SELECT file_id, name, type_desc, physical_name, size, max_size  
    FROM sys.database_files ;  
    GO
    

    Testという新しいデータベースを作成する前に、まずマスターデータベースに切り替えます。 。次に、新しいデータベースに切り替えて、sys.database_filesからそのデータベースファイルに関する特定の情報を選択します。 システムカタログビュー。

    新しいデータファイルを追加する

    -- Add a new data file
    ALTER DATABASE Test   
    ADD FILE (  
        NAME = Test2,  
        FILENAME = '/var/opt/mssql/data/Test2.mdf',  
        SIZE = 8MB
        );  
    GO
    
    -- View it's data file and log file info
    USE Test;  
    GO  
    SELECT file_id, name, type_desc, physical_name, size, max_size  
    FROM sys.database_files ;  
    GO

    ここで、論理名がTest2の新しいデータファイルを追加します。 および/var/opt/mssql/data/Test2.mdfの物理パス (これはLinux / Macパスであることに注意してください。Windowsを使用している場合は、スラッシュの代わりにバックスラッシュを使用してください)。ここでも、sys.database_filesにクエリを実行します。 新しいファイルの詳細を確認できるように、システムカタログビューを表示します。

    データファイルを空にして削除します

    この例では、データベースが本番環境に移行し、作成したデータファイルにデータがロードされていると仮定します。次に、そのファイルを削除します(何らかの理由で)。ただし、ファイルを削除する前に、ファイルを空にする必要があります(データを別のファイルに移行します)。

    その方法は次のとおりです。

    -- Empty the new data file
    DBCC SHRINKFILE (Test2, EMPTYFILE);  
    GO
    
    -- Remove the file
    ALTER DATABASE Test  
    REMOVE FILE Test2;  
    GO 
    
    -- View it's data file and log file info
    USE Test;  
    GO  
    SELECT file_id, name, type_desc, physical_name, size, max_size  
    FROM sys.database_files ;  
    GO

    したがって、これはこのページの最初の例と同じですが、データベースの名前が異なる点が異なります。この例では、sys.database_filesにクエリを実行します。 ファイルが実際に削除されたことを確認します。


    1. デジタルトランスフォーメーション:すべてはデータ思考から始まります

    2. 行が更新または挿入されたかどうかを検出します

    3. SQLでのDECODE関数の使用は何ですか?

    4. SSRS2014レポートのデプロイの問題