9

Zbudowałem bazę danych w SQL Server 2008 R2 i używam Visual Studio 2010 Ultimate do stworzenia projektu bazy danych dla niego.Jak obsługiwać użytkowników i loginy w projekcie bazy danych Visual Studio?

Stworzyłem projekt SQL Server i projekt bazy danych do reprezentowania mojego środowiska na podstawie tego MSDN walkthrough. Porównanie schematów dla obu projektów działa zgodnie z oczekiwaniami i jestem w stanie replikować wszystkie zmiany serwera do projektu.

Jednak wydaje się, że zaimportowano niektóre konfiguracje specyficzne dla środowiska, takie jak loginy, mapowanie użytkownika/logowania, lokalne konta usług (np. NT SERVICE \ MSSQL $ SQLEXPRESS2008) itp. To nie wydaje się idealne, ponieważ moje wrażenie było tą bazą danych projekt może zostać wdrożony na innym serwerze, a szczegóły dotyczące środowiska mogą być inne. Na przykład wymienione instancje mogą być różne między Dev, QA i Prod. Użytkownicy mogą być mapowani na różne loginy.

Czy robię to właściwie, czy też powinienem podjąć dodatkowe kroki, aby projekt bazy danych był przenośny dla wszystkich środowisk?

Moim celem jest, aby wykorzystać ten projekt do schematu

  1. robienia zdjęć w kontroli wersji
  2. zmiany schematu
  3. wdrożyć takie jak poprzez generowanie skryptów zmiany
  4. krawat do testów jednostkowych do tworzenia jednorazowego środowiska testowego na latać.

Odpowiedz

7

Musieliśmy się z tym pogodzić i skończyło się na tym, że Jamie Thompson opracował skrypty po wdrożeniu, aby obsłużyć uprawnienia w oparciu o zmienną zawierającą nazwę środowiska/konfiguracji. Można znaleźć artykuł tutaj: http://sqlblog.com/blogs/jamie_thomson/archive/2010/07/21/a-strategy-for-managing-security-for-different-environments-using-the-database-development-tools-in-visual-studio-2010.aspx

ja również napisał scenariusz do obsługi włączony uprawnień:

SELECT 
state_desc + ' ' + permission_name + 
' on ['+ ss.name + '].[' + so.name + '] 
to [' + sdpr.name + ']' 
COLLATE LATIN1_General_CI_AS as [Permissions T-SQL] 
FROM SYS.DATABASE_PERMISSIONS AS sdp 
JOIN sys.objects AS so 
    ON sdp.major_id = so.OBJECT_ID 
JOIN SYS.SCHEMAS AS ss 
    ON so.SCHEMA_ID = ss.SCHEMA_ID 
JOIN SYS.DATABASE_PRINCIPALS AS sdpr 
    ON sdp.grantee_principal_id = sdpr.principal_id 

UNION 

SELECT 
state_desc + ' ' + permission_name + 
' on Schema::['+ ss.name + '] 
to [' + sdpr.name + ']' 
COLLATE LATIN1_General_CI_AS as [Permissions T-SQL] 
FROM SYS.DATABASE_PERMISSIONS AS sdp 
JOIN SYS.SCHEMAS AS ss 
    ON sdp.major_id = ss.SCHEMA_ID 
    AND sdp.class_desc = 'Schema' 
JOIN SYS.DATABASE_PRINCIPALS AS sdpr 
    ON sdp.grantee_principal_id = sdpr.principal_id 
order by [Permissions T-SQL] 
GO 

Wspólnie skonfigurować uprawnienia język po wdrożyć skrypty i foldery, które odtwarzają użytkowników/role/uprawnienia oparte na środowisku. Nazywamy skrypt "opakowujący" z głównej sekcji po wdrożeniu, która przechodzi przez resztę, aby dowiedzieć się, która sekcja ma zostać uruchomiona.

+0

Czy to nadal najlepsze rozwiązanie dla nowszych wersji SQL Server i Visual Studio? Próba znalezienia najlepszego sposobu radzenia sobie z tym na VS2015 już teraz, ale nie widząc niczego nowego. – ngneema

+1

Nie widziałem nic nowego o tym, jak to zrobić, chociaż w VS2015 istnieją bardziej szczegółowe ustawienia, które ignorują różne typy obiektów. –