2016-04-07 26 views
0

Veritabanları dışında her şeyi (veri dışında) kopyalayıp yeni bir veritabanına dağıtmam gereken bir durum var. Şu anda mevcut veritabanından SSDT'ye içe aktarıyorum ve daha sonra projeyi yeni veritabanına yayınlayarak yapıyorum.Veritabanını SSDT ile programlı olarak içe aktarma

Program aracılığıyla bunu yapmanın bir yolu olup olmadığını bilmek istiyorum. İdeal olarak, sürecin veri tabanının adını kopyalamak için veritabanına adını verebileceğim bir işlemin olmasını istiyorum. Veritabanının adı kopyalanacak ve daha sonra işlem otomatik olarak ithalatı ve ihracatı gerçekleştirecek.

Bunu yapmanın iyi bir yolu olabilir mi?

cevap

8

SSDT, Veri Katmanı Uygulama Çerçevesi (DacFX olarak da bilinir) adlı bir kütüphane tarafından desteklenmektedir. DacFX, dacpac dosyalarını ayıklamak ve yayımlamak için kullanabileceğiniz bir genel API'dir. Böyle bir dizin şey Visual Studio veya SQL Server altında Program Files DacFX bir kopyasını bulabilirsiniz:

  • C: \ Program Files Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ (x86) \ SQLDB \ DAC \ 130
  • C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ DAC \ bin

burada DacFX son sürümünü indirebilirsiniz: https://www.microsoft.com/en-us/download/details.aspx?id=51672

Not DacFX'i yüklediğinizde aynı zamanda Yukarıdaki indirme sayfasının Sistem Gereksinimleri bölümünde bulunan SqlSysClrTypes ve SqlDom bağımlılıklarını kurmaya çalışın.

bunu gibi SqlPackage.exe kullanabilir, ayıklamak ve bir dacpac dosyasını yayınlamak için DacFX kullanmak için:

C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage.exe /a:extract /scs:"Data Source=YOURSERVER;Initial Catalog=YOURDB;Integrated Security=true" /tf:C:\temp\yourdb.dacpac

C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage.exe /a:publish /tcs:"Data Source=YOURSERVER;Initial Catalog=YOUROTHERDB;Integrated Security=true" /sf:C:\temp\yourdb.dacpac

Alternatif olarak, programlı Microsoft.SqlServer kullanarak DacFX kullanabilirsiniz. Dac API, bu şekilde: using Microsoft.SqlServer.Dac; class Program { static void Main(string[] args) { DacServices ds = new DacServices("Data Source=YOURSERVER;Initial Catalog=YOURDB;Integrated Security=true"); ds.Extract(@"C:\temp\yourdb.dacpac", "YOURDB", "AppName", new System.Version()); using (DacPackage dp = DacPackage.Load(@"C:\temp\yourdb.dacpac")) { ds.Deploy(dp, "YOUROTHERDB"); } } }

+0

Microsoft.SqlServer.Dac API'sini kullanmak benim için mükemmel. Teşekkür ederim!!!! – Liv

0

Database Create Script

[2]: kodunda bu Komut çalıştır

Ben O

+0

Teşekkürler, ancak program aracılığıyla bunu yapmak istiyorum – Liv

+0

Kodda kod. –

1

Sen programlama yapabileceğini Yardım umut ama Redgate sqlcompare için bir lisans satın almak olacaktır kolay söyleyebilirim ve bunun komut satırı sürümünü kullanarak.

İlgili konular