7

Son zamanlarda projelerimden birini Visual Studio 2013'e güncelleştirdim. Güncelleştirme, yeni SQL proje formatıyla uyumlu hale getirmek için .dbproj'imi .sqlproj olarak değiştirdi.Visual Studio 2013 Şema Karşılaştırması neden her nesne tanımı için İzin Bildirimleri içerir ve bunları projeden farklı olarak ele alır?

Dönüştürme işleminden sonra, SQL projemi ve SQL 2008 üretim veritabanımla karşılaştırdığım bir şema çalıştırdım ve şimdi her nesnenin farklı olarak virüse karşı olduğunu düşünüyorum. Şema karşılaştırma aracından yapılan araştırma sonucunda, farkın, her nesne tanımının, her bir rol veya kullanıcıya o nesne üzerinde verilen izinlere ilişkin ifadeleri de içermesi gerçeğinde olduğu anlaşılmaktadır.

Böylece, sunucu tarafında şuna benzer:

CREATE PROC MyCoolProc 
BEGIN 
    --some code 
END 
GO 

GRANT EXECUTE 
    ON OBJECT MyCoolProc TO MyAwesomeUser 
    AS [Schema]; 
GO 

ve aynı nesne için istemci tarafı şuna benzer:

CREATE PROC MyCoolProc 
BEGIN 
    --some code 
END 

Bunun nedeni nedir? Ben Visual Studio 2010 kullanarak karşılaştırmak şema çalıştırdığınızda bu gerçekleşmedi. Ayrıca, SQL karşılaştırma aracı için tüm seçenekleri inceledim ve "nesneleri için izin ifadeleri yoksay" bir tane bulamadık. Biri yardım edebilir mi?

DÜZENLEME

Sadece bu Visual Studio'nun, SQL ile ilgili bir sorun olduğundan emin olmak için karşılaştırın aracı değil, SQL Server kendisi, ben yeniden ran benim evreleme ve üretim veritabanı ve aralarında Visual Studio 2010 karşılaştırmak Nesne tanımları, Visual Studio 2013'teki gibi nesne izinlerini içermez.

cevap

18

Visual Studio 2010'un SQL karşılaştırma aracı "Şema Karşılaştırma Seçenekleri" penceresindeki seçenekler altında, "Nesne Türleri" sekmesi için bir onay kutusunun bulunduğu görünür. Göz ardı etmek istediğiniz tüm nesne türlerini. Varsayılan olarak "Genişletilmiş Özellikler" ve "İzinler" işaretlidir.

Visual Studio 2013'ün SQL Karşılaştırma aracı "Şema Karşılaştırma Seçenekleri" penceresiyle karşılaştırıldığında, "Nesne Türleri" sekmesinde, karşılaştırmaya dahil etmek istediğiniz tüm nesne türleri için bir onay kutusu vardır. "Application-scoped" ağaç düğümü altında, tüm nesne türleri varsayılan olarak işaretlidir. "Genişletilmiş Özellikler" ve "İzinler" işaretlerinin işaretini kaldırmak, bu SQL Karşılaştırma aracının Visual Studio 2010 karşılaştırma aracıyla tam olarak aynı şekilde davranmasına neden olur.

Bu, yabancı nesnelerin izinlerinin ve genişletilmiş özelliklerin, her bir nesnenin tanımının bir parçası olarak sunucu tarafından iade edilmesini önler. Umarım, bu aynı konuya gelen başka birine yardımcı olacaktır.

+2

Bunu bulmakta sorun yaşayanlar için, VS2010'da, Karşılaştır düğmesinin sağındaki küçük Ayarlar tekerleğinde "Şema Karşılaştırma Seçenekleri" ni buldum. Ek yardım için –

+0

@AlaaAwad +1. 2013 yılında –

+3

, SQLSchemaCompare Dosyasının üst menüsünde de Siyah DİŞLİ –