Şema ve verileri çıkarmak için SSMS komut dosyası oluşturma kombinasyonunu kullandık ve ardından komut dosyalarında anahtar kelime ayrıştırmaya ve belirteç tabanlı değiştirmeye izin veren kendi veritabanı aracımızı kullandık. Ayrıca komut dosyalarının yalnızca bir kez uygulanmasını sağlar.
Neden?
- SQL Server 2000, 2005 ve 2008'deki kurulumları desteklememiz gerekiyor ve sürümler arasında veri türlerinde değişiklikler var, örneğin 2005+ nvarchar (max) içerirken 2000 yalnızca ntext'i destekler. Dolayısıyla, betiklerimiz bir belirteç kullanır ve db seçimine dayalı olarak doğru türle değiştirilir.
- Bazı komut dosyalarının yürütülmesi, yürütmeden sonra bir bekleme süresi gerektirir, örneğin, bir komut dosyası aracılığıyla yeni bir veritabanı oluşturduktan sonra birkaç saniye beklemediyseniz, SQL Server'ın bazen başarısız olabileceğini gördük (çünkü veritabanını oluşturmak için zamanı yoktu dosyalar) tablo vb. oluşturmaya devam ettiğinde
- Hangi senaryoların ne zaman yürütüldüğüne dair bir geçmiş tutmak istedik.
- Wix MSI yükleyicimizin bağlantı dizesini ve kimlik bilgilerini belirtmesine izin vermek istedik ve bunları komut dosyalarına geçirmek için bir yola ihtiyacımız vardı, böylece bir kez daha belirteçler ve bazı koşullu mantık kullanarak.
Örnek komut dosyası (kısalık için düzenlenmiştir)
CREATE DATABASE [$Database$]
GO
EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$
GO
USE [$Database$]
GO
IF '1'!='$IntegratedSecurity$'
BEGIN
CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$]
CREATE USER [$User$] FOR LOGIN [$Login$]
EXEC sp_addrolemember N'db_owner', N'$User$'
END
GO