2013-08-31 15 views
8

üzerinde başarısız oluyor Yerel bir db için bir bacpac vermek için sqlpackage komutunu çalıştırmak için aşağıdaki komutu kullanıyorum.SqlPackage.exe aracını kullanarak SqlDatabase dosyasını Bacpac'e aktarma fillfactor

"C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ DAC \ bin \ sqlpackage.exe"/eylem: İhracat /tf:".\dbname_Baseline.bacpac"/ SourceConnectionString: "XXXXXXXXXXXX"

"Element Primary Key: [dbo]. [PK_Name] desteklenmeyen bir özelliğe sahip FillFactor ayarlanmış ve bir veri paketinin parçası olarak kullanıldığında desteklenmiyor."

Dolgu tabanının desteklenmediğini anlıyorum, ancak desteklenmeyen özellikleri görmezden gelebilecek bir şey var mı?

Teşekkür

Mark

+0

DacFx ve SMO paketlerini [nuget] adresinden (https://www.nuget.org/packages) güncelleştirmeyi veya en yeni [SSMS] yüklemeyi deneyin (https://msdn.microsoft.com/en-us/library /mt238290.aspx). Bu, GAC'ınızda I/E için gerekli dll'leri güncellemelidir. – Pio

cevap

1

1GB etrafında küçük bir veritabanı için bacpac ihraç ile anahtarı

/p:IgnoreFillFactor ={ True | False } 
+1

Merhaba, 'IgnoreFillFactor', 'Export' eylemi için geçerli bir argüman değil. Bu argümanı komut satırına koymaya çalıştığımda. –

+0

Bu,/action için bir parametreye benziyor:/action: Export yerine yayınla. (sql azure için hazır bir db almak eğlenceli değil mi?) –

1

Ben deneyler yapıyorlar geçirin ve veritabanında fillfactor yeniden yapılandırabilirsiniz. SQL Server Manager Studio'da, dizin için bir 'bırak ve yeniden oluştur' komut dosyası oluşturun, fillfactor belirtimini kaldırmak için oluşturulan komut dosyasını düzenleyin, betiği çalıştırın ve bu, dizini sqlpackage.exe için kabul edilebilir varsayılan bir doldurma faktörü ile yeniden oluşturur. . Bu, PK'lerin yanı sıra dizinler için çalışmalıdır, küçük veritabanları için hızlı olmalı ve veritabanı üzerinde olumsuz bir etkisi olmamalıdır.

Bu sorunun, sqlpackage.exe'nin bazı hataları yok saymasıyla ilgili soruya cevap vermediğini farkettim, ancak bu, doğrudan veritabanında olduğu gibi sorunu çözmenin daha iyi bir yoludur.

+0

Bu küçük veritabanları için geçerli bir çözümdür. Ancak, 270'den fazla sorun indeksine sahip geniş bir veritabanımız var! Bunun için daha iyi bir çözüm olmalı! –

+0

Cevabımı genişletmek için ALTER INDEX REBUILD komutunu kullanarak doluluk oranını da değiştirebilirsiniz, SQL Server Manager Studio GUI'sini kullanmak zorunda değilsiniz. Dizinleri gereken dolgu faktörü ile tek tek yeniden oluşturmak için bir komut dosyası yazabilirsiniz ve değişiklikleri bir süre boyunca çalıştırabilirsiniz. Bir indeks gerekli dolgu maddesi ile yeniden oluşturulduktan sonra yeniden oluşturulmasına gerek yoktur. Ayrıca, SQL Server Enterprise sürümünün, çevrimiçi olarak gerçekleşmesi için ALTER INDEX REBUILD'in çalışmasına izin verdiğine inanıyorum. Bu da kesinti süresini azaltmalıdır. – Ubercoder

İlgili konular