Aracılığıyla paylaş


sp_attach_db (Transact-SQL)

Şunlar için geçerlidir: SQL Server

Bir veritabanını bir sunucuya bağlar.

Önemli

Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Bunun yerine kullanmanızı CREATE DATABASE <database_name> FOR ATTACH öneririz. Daha fazla bilgi için bkz . CREATE DATABASE. Bir veya daha fazlası yeni bir konuma sahip olduğunda birden fazla log dosyasını yeniden oluşturmak için CREATE DATABASE <database_name> FOR ATTACH_REBUILD_LOG.

Bilinmeyen veya güvenilmeyen kaynaklardan veri tabanları eklemeyin veya geri yüklemeyin. Bu tür veritabanları, istenmeyen Transact-SQL kodu yürütebilecek veya şemayı veya fiziksel veritabanı yapısını değiştirerek hatalara neden olabilecek kötü amaçlı kod içerebilir. Bilinmeyen veya güvenilmeyen bir kaynaktan veritabanı kullanmadan önce, veritabanında üretim dışı bir sunucuda DBCC CHECKDB'yi çalıştırın ve ayrıca veritabanında saklı yordamlar veya diğer kullanıcı tanımlı kodlar gibi kodu inceleyin.

Sözdizimi

sp_attach_db
    [ @dbname = ] N'dbname'
    , [ { @filename1 ... @filename16 } = ] { N'*filename1*' ... N'*filename16*' }
[ ; ]

Arguments

[ @dbname = ] N'dbname'

Sunucuya bağlanacak veritabanının adı. @dbnamesysname'dir, varsayılan yoktur.

[ { @filename1 ... @filename16 } = ] { N'filename1' ... N'filename16' }

Bir veritabanı dosyasının fiziksel adı, yol dahil. Bu parametre nvarchar(260)'dır ve varsayılan olarak .NULL 16 dosya adı belirleyebilirsiniz. Parametre isimleri @filename1'tan başlar ve @filename16'ye kadar artırılır. Dosya isim listesi en azından birincil dosyayı (.mdf) içermelidir. Ana dosya, veritabanındaki diğer dosyalara işaret eden sistem tablolarını içerir. Liste, veritabanı ayrıldıktan sonra taşınan dosyaları da içermelidir.

Bu parametre, ifadenin CREATE DATABASE parametresine eşlenirFILENAME. Daha fazla bilgi için bkz . CREATE DATABASE.

Uyarı

Tam metin katalog dosyaları içeren SQL Server 2005 (9.x) veritabanını daha yeni bir SQL Server sürümüne eklediğinizde, katalog dosyaları önceki konumlarından ve diğer veritabanı dosyalarıyla birlikte, SQL Server 2005 (9.x) ile aynı şekilde eklenir. Daha fazla bilgi için Upgrade Full-Text Search bölümüne bakınız.

Dönüş kodu değerleri

0 (başarı) veya 1 (başarısızlık).

Sonuç kümesi

Yok.

Açıklamalar

Saklanan prosedür, sp_attach_db yalnızca daha önce veritabanı sunucusundan ayrılmış veritabanlarında açık sp_detach_db bir işlem kullanılarak veya kopyalanmış veritabanlarında yürütülmelidir. 16'dan fazla dosya belirtmeniz gerekiyorsa, CREATE DATABASE <database_name> FOR ATTACH veya CREATE DATABASE <database_name> FOR_ATTACH_REBUILD_LOGkullanın. Daha fazla bilgi için bkz . CREATE DATABASE.

Herhangi bir belirtilmemiş dosyanın son bilinen konumunda olduğu varsayılır. Farklı bir konumda dosya kullanmak için yeni konumu belirtmeniz gerekir.

SQL Server'ın daha yeni bir sürümü tarafından oluşturulan bir veritabanı önceki sürümlere eklenemez.

Uyarı

Bir veritabanı anlık görüntüsü ayrılamaz veya eklenebilir.

Kopan bir veritabanı eklediğinizde, koplanmış değil, kopyalanmış bir veritabanı eklerken aşağıdaki koşulları göz önünde bulundurun:

  • Veritabanını orijinal veritabanıyla aynı sunucu örneği ve sürümüne eklerseniz, başka adımlar gerekmez.

  • Veritabanını aynı sunucu örneğine ekli ancak yükseltilmiş bir sürüme sahipseniz, ekleme işlemi tamamlandıktan sonra çoğaltmayı yükseltmek için sp_vupgrade_replication yürütmeniz gerekir.

  • Veritabanını sürümden bağımsız olarak farklı bir sunucu örneğine eklerseniz, ekleme işlemi tamamlandıktan sonra çoğaltmayı kaldırmak için sp_removedbreplication yürütmeniz gerekir.

Bir veritabanı ilk kez yeni bir SQL Server örneğine bağlandığında veya geri yüklendiğinde, veritabanı ana anahtarının (DMK) bir kopyası - hizmet master anahtarı (SMK) tarafından şifrelenmiş - henüz sunucuda depolanmaz. DMK'yı şifre çözmek için bu OPEN MASTER KEY ifadeyi kullanmalısınız. DMK şifresi çözüldükten sonra, gelecekte otomatik şifre çözmeyi etkinleştirme seçeneğiniz vardır; ALTER MASTER KEY REGENERATE bu ifade sunucuya SMK ile şifrelenmiş DMK'nın bir kopyasını sağlar. Bir veritabanı önceki sürümden yükseltildiğinde, DMK daha yeni AES algoritmasını kullanmak üzere yeniden oluşturulmalıdır. DMK'yi yeniden oluşturma hakkında daha fazla bilgi için bkz. ALTER MASTER KEY. AES'ye yükseltmek için DMK anahtarını yeniden oluşturmak için gereken süre, DMK tarafından korunan nesne sayısına bağlıdır. AES'ye yükseltmek için DMK anahtarını yeniden oluşturmak yalnızca bir kez gereklidir ve anahtar döndürme stratejisinin bir parçası olarak gelecekteki yenilemeler üzerinde hiçbir etkisi yoktur.

Permissions

Veritabanı eklendiğinde izinlerin nasıl işlendiğine dair bilgi için bkz. DATABASE OLUŞTUR.

Örnekler

Aşağıdaki örnek, dosyaları mevcut AdventureWorks2025 sunucuya ekler.

EXECUTE sp_attach_db
    @dbname = N'AdventureWorks2022',
    @filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_Data.mdf',
    @filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_log.ldf';