Aracılığıyla paylaş


SQL Server'da bellek için iyileştirilmiş dosya grubuna sahip bir veritabanı geri yüklenirken hata 3156

Bu makalede, SQL Server'da bellek için iyileştirilmiş dosya grubuna sahip bir veritabanını geri yüklemeye çalıştığınızda oluşan 3156 hatası için geçici bir çözüm sağlanır.

Şunlar için geçerlidir: SQL Server

Belirtiler

SQL Server'da bellek için iyileştirilmiş dosya grubuna sahip bir veritabanını geri yüklemeye çalışırken aşağıdaki hata iletisini alıyorsunuz:

Msg 3156, Düzey 16, Durum 6, Satır 1
'<Veritabanı Dosyası' dosyası> '<Driver>:\Folder Path>\<<Database Folder' klasörüne> geri yüklenemiyor. Dosya için geçerli bir konum belirlemek için WITH MOVE komutunu kullanın.

Neden

Veritabanı geri yükleme işlemi sırasında, SQL Server Veritabanı Altyapısı bellek için iyileştirilmiş bir dosya grubu için bir klasör oluşturur. Bu sorun, aynı klasör yolunda aynı ada sahip bir klasör zaten varsa ve klasör SQL Server veya diğer işlemler tarafından kullanılıyorsa oluşur.

Geçici çözüm

Veritabanını geri yüklerken farklı bir klasör adı veya farklı bir klasör yolu kullanın.

Betik örneği

  • Dosya grubuyla veritabanı oluşturma betiği örneği

    USE [master];
    GO
    CREATE DATABASE Contoso
    ON PRIMARY
      ( NAME = 'Contoso_Primary',
        FILENAME=
           'C:\SQLserver\Contoso\Contoso_data.mdf',
        SIZE=4MB,
        MAXSIZE=10MB,
        FILEGROWTH=1MB),
    FILEGROUP Contoso_FG1
      ( NAME = 'Contoso_FG1',
        FILENAME =
           'C:\SQLserver\Contoso\Contoso_FG1.ndf',
        SIZE = 1MB,
        MAXSIZE=10MB,
        FILEGROWTH=1MB)
    
    ALTER DATABASE Contoso 
    ADD FILEGROUP [Contoso_FG1] CONTAINS MEMORY_OPTIMIZED_DATA 
    GO
    
  • Veritabanı geri yükleme betiği örneği

    USE [master]
    GO
    RESTORE DATABASE [Contoso] FROM  DISK = N'C:\backup\compress\Contoso\Contoso.bak' WITH FILE = 1,
    MOVE N'Contoso_data' TO N'C:\SQLserver\Contoso\Contoso_data.mdf',
    MOVE N'Contoso_log' TO N'C:\SQLServer\Contoso\Contoso_log.ldf',
    MOVE N'<Database File>' TO N'<Driver>:\<Folder Path>\<Database Folder>',
    Replace,
    NOUNLOAD, 
    STATS = 5
    GO
    

    Not

    <Database Folder> kullanılmazsa, betikteki anahtar sözcük geri Replace yükleme işleminin hatasız tamamlanmasını sağlar.

Ayrıca bkz.

MSSQLSERVER_3156