mamy różne obiekty bazy danych, takie jak widok, procedury składowane, wyzwalacze, funkcje i indeksy w relacyjnej bazie danych. Wiele razy chcemy przeglądać definicje tych obiektów. Do generowania skryptów możemy użyć zarówno graficznego sposobu SSMS, jak i t-SQL.
na przykład chcemy wyświetlić definicję widoku SQL .. Zbadajmy oba sposoby generowania skryptów.,
różne metody wyświetlania definicji obiektów
Kreator skryptów SSMS:
rozwiń bazę danych i przejdź do widoków. Kliknij prawym przyciskiem myszy na konkretnym widoku, dla którego chcemy wygenerować skrypt i kliknij na widoku skryptu jako – > Utwórz do.
skrypt możemy pobrać w następujący sposób.
- w nowym oknie zapytania
- Pobierz skrypt w .,Plik SQL
- skopiuj skrypt do schowka
- Get script in a SQL Agent job
Generate script Wizard:
do wygenerowania skryptu możemy użyć Generate Script Wizard w SSMS. Kliknij prawym przyciskiem myszy na bazie danych i przejdź do zadań – > Generuj Skrypty.
w kreatorze generowania skryptów wybierz określony obiekt bazy danych i kliknij Dalej.
możesz ukończyć kreator, aby pobrać skrypt.,
używając t-SQL:
możemy również użyć zapytań t-SQL, aby uzyskać skrypt obiektów. Możesz użyć następujących metod t-SQL, aby uzyskać definicje dla obiektu.
- Pobierz skrypty za pomocą Information_Schama.,Widoki:
wykonaj następujące zapytanie w źródłowej bazie danych i podaj nazwę obiektu w klauzuli where
1234wybierz nazwę tabeli jako nazwę widoku,view_definition jako viewdefinitionz information_schema.,Viewswhere TABLE_NAME=’vEmployee' - Sp_helptext system procedure:
You can use sp_helptext system procedure as well to get the script. You need to specify the object name along with the schema if it is other than dbo.
1EXEC sp_helptext '.,' - funkcja object_definition
możemy również użyć funkcji object_definition do wygenerowania skryptu dla obiektu. W poniższym zapytaniu używamy funkcji object_definition dla widoku w bazie danych AdventureWorks2017
1select object_definition (object_id(N'.,'))
uprawnienia wymagane do generowania skryptów obiektów
dla każdego DBA Kontrola uprawnień użytkowników do dostępu do obiekty. Wiele razy użytkownicy wymagają dodatkowych praw do bazy danych, aby wykonywać swoje obowiązki. Domyślnie użytkownicy z rolą publiczną nie mają uprawnień do wyświetlania definicji obiektu. Jest to przydatne dla programistów, aby uzyskać definicje obiektów, tak aby mogli wykonać to w środowisku nieprodukcyjnym., Nie chcemy również przyznawać uprzywilejowanych uprawnień użytkownikom, szczególnie w środowisku produkcyjnym.
stwórzmy nowego użytkownika bazy danych i zapewnimy publiczną rolę w bazie danych AdventureWorks2014.
Połącz się z serwerem SQL przy użyciu poświadczeń logowania posiadających uprawnienia roli publicznej.
wykonaj zapytanie, aby uzyskać definicję widoku obiektu. Polecenie sp_helptext wyświetla komunikat o błędzie, że obiekt nie istnieje w bazie danych.,
jeśli spróbujemy pobrać skrypt używając INFORMATION_SCHEMA.Views, nie wyświetla żadnego komunikatu o błędzie, jednak nie zwraca żadnego wiersza.
nie możesz również używać SSMS, ponieważ nie wyświetla obiektów dla dostępu do roli publicznej.
możemy użyć uprawnień do definicji widoku w SQL Server, aby umożliwić użytkownikom przeglądanie definicji obiektów. Możemy zapewnić ten dostęp do roli publicznej lub indywidualnego użytkownika.,
- jeśli chcemy zapewnić prawa do definicji obiektów widoku wszystkim użytkownikom z rolą publiczną, wykonamy następujące zapytanie.,v>
123USE AdventureWorks2017GOGRANT VIEW ANY DEFINITION TO Rajendra - To grant View Definition rights to a specific user and an object for a particular database
1GRANT VIEW DEFINITION on ., TO Rajendra
Let’s provide access to a specific user (Rajendra) on a specific object ( .) and verify the permissions to view the definition of an object.
1
|
EXEC sp_helptext '.,'
|
możesz wypróbować inne metody, aby wyświetlić definicje obiektów określone w poprzedniej sekcji. Możesz również odświeżyć połączenie w SSMS, aby wyświetlić wszystkie obiekty po przypisaniu uprawnień do definicji widoku.
możemy śledzić uprawnienia za pomocą polecenia sp_helprotect.,
- na poniższym zrzucie ekranu możesz zaobserwować:
- obiekt: vEmployee
- właściciel( schemat) : HumanResources
- grantee ( user): Rajendra
- grantor ( permission grantor): dbo
- permission: Grant
- Action( rights): view definition
revoke view definitions permission
nauczyliśmy się nadawać uprawnienia definicji widoku użytkownikowi, roli lub obiektowi w SQL serverze.poprzednia sekcja., Ważnym aspektem jest również wiedzieć, jak cofnąć te uprawnienia definicji widoku. Wiele razy możemy chcieć dać użytkownikowi tymczasowy dostęp i odwołać go później. Możemy cofnąć uprawnienia dla użytkownika we wszystkich bazach danych za pomocą polecenia Revoke View Any Definition.,iv>
1
2
3
|
USE AdventureWorks2017
GO
REVOKE VIEW DEFINITION on ., Do Rajendra
|
wnioski
w tym artykule zbadaliśmy przyznanie i Cofnięcie uprawnień definicji widoku w SQL Server, aby wyświetlić definicje dla obiektu. Dostarcza informacji niezbędnych do zarządzania uprawnieniami do definicji obiektów. Jeśli masz jakieś uwagi lub pytania, zostaw je w komentarzach poniżej.,
- Autor
- Ostatnie posty
jest twórcą jednego z największych darmowych internetowych zbiorów artykułów na jeden temat, z jego 50-częściową serią na SQL Server Always On Availability Groups. W oparciu o swój wkład w społeczność SQL Server został wyróżniony różnymi nagrodami, w tym prestiżowym „najlepszym autorem roku” nieprzerwanie w 2020 i 2021 w sqlshack.,
Raj jest zawsze zainteresowany nowymi wyzwaniami, więc jeśli potrzebujesz pomocy Konsultacyjnej na dowolny temat poruszany w jego pismach, można do niego dotrzeć w rajendra.gupta16@gmail.,com
Zobacz wszystkie posty Rajendra Gupta
- session timeouts in SQL Server Always On Availability Groups – February 8, 2021
- wykonywanie mniejszych i większych aktualizacji wersji dla AWS RDS SQL Server – 29 stycznia 2021
- wdrażanie instancji AWS RDS PostgreSQL – 27 stycznia 2021
Leave a Reply