Jakie zapytanie pokaże mi pełną definicję, w tym indeksy i klucze dla tabeli SQL Server? Chcę czystego zapytania - i wiem, że SQL Studio może mi to dać, ale często pracuję na „dzikich” komputerach, które mają tylko najbardziej podstawowe aplikacje i nie mam uprawnień do instalowania studia. Ale SQLCMD jest zawsze opcją.
AKTUALIZACJA: Próbowałem sp_help, ale daje tylko jeden rekord, który pokazuje nazwę, właściciela, typ i utworzony_datime. Czy jest coś, czego mi brakuje w sp_help?
Oto, co nazywam:
sp_help lotniska
Zauważ, że naprawdę chcę DDL, który definiuje tabelę.
sql-server
tsql
Daniel Williams
źródło
źródło
sp_help
tego, że zwraca wiele zestawów wyników. Opisujesz kolumny zwrócone przez pierwszy zestaw wyników.Odpowiedzi:
Nie ma łatwego sposobu na zwrócenie DDL. Jednak większość szczegółów można uzyskać z widoków schematu informacji i widoków systemu .
źródło
sp_columns
jak wspomniałem w mojej odpowiedzi. Jeśli chcesz uzyskać informacje o biegu FKsp_fkeys
. Jeśli chcesz poznać indeksy, wykonajsp_statistics
.Czy próbowałeś sp_help?
źródło
Odwiedź http://www.stormrage.com/SQLStuff/sp_GetDDL_Latest.txt .
Znajdziesz kod
sp_getddl
procedury dla SQL Server. Celem procedury jest skrypt dowolnej tabeli, tabeli tymczasowej lub obiektu.STOSOWANIE:
lub
lub
lub
Przetestowałem go na SQL Server 2012 i wykonuje świetną robotę.
Nie jestem autorem procedury. Wszelkie ulepszenia, które wprowadzisz, wyślij do Lowell Izaguirre ([email protected]).
źródło
Najłatwiejszym i najszybszym sposobem, jaki przychodzi mi do głowy, byłoby użycie sp_help
sp_help 'TableName'
źródło
Użyj tej małej aplikacji wiersza poleceń systemu Windows, która pobiera
CREATE TABLE
skrypt (z ograniczeniami) dla dowolnej tabeli. Napisałem to w C #. Po prostu skompiluj go i przenieś na kartę pamięci. Być może ktoś może przenieść to na Powershell.źródło
źródło
To zwróci kolumny, typy danych i indeksy zdefiniowane w tabeli:
To zwróci wyzwalacze zdefiniowane w tabeli:
źródło
Od SQL 2012 można uruchomić następującą instrukcję:
Jeśli wprowadzisz złożoną instrukcję wyboru (łączenia, podselekcje itp.), Poda ona definicję zestawu wyników. Jest to bardzo przydatne, jeśli chcesz utworzyć nową tabelę (lub tabelę tymczasową) i nie chcesz ręcznie sprawdzać każdej definicji pola.
https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-describe-first-result-set-transact-sql
źródło
Po prostu wpisz nazwę tabeli, wybierz ją i naciśnij ATL + F1
Powiedz, że nazwa twojej tabeli jest,
Customer
a następnie otwórz nowe okno zapytania , wpisz i wybierz nazwę tabeli i naciśnij ALT + F1Pokaże pełną definicję tabeli.
źródło
Odmiana odpowiedzi @Anthony Faull dla osób korzystających z LINQPad:
Będziesz musiał odwołać się do 2 zestawów:
I dodaj odwołania do przestrzeni nazw, jak wspomniano we fragmencie Anthony'ego.
źródło
Wiem, że to stare pytanie, ale dokładnie to, czego szukałem. Ponieważ chcę wsadowo skryptować niektóre tabele, przepisałem kod C # od Anthony'ego Faulla dla PowerShell.
Ten wykorzystuje zintegrowane zabezpieczenia:
A tutaj z nazwą użytkownika i hasłem:
źródło
Wypróbuj procedurę składowaną sp_help.
sp_help <>
źródło
Jako dodatek do odpowiedzi Barry'ego. Sp_help może być również używany samodzielnie do iteracji wszystkich obiektów w określonej bazie danych. Masz również sp_helptext dla swojego arsenału, który tworzy skrypty elementów programistycznych, takich jak procedury składowane.
źródło
Innym sposobem jest wykonanie procedury sp_columns .
źródło
źródło
„Zauważ, że naprawdę chcę DDL, który definiuje tabelę”.
użyj pg_dump:
Daje ci definicję tabeli (
-s
jest tylko schematem, brak danych) określonej tabeli (nazwa tabeli-t
) w bazie danych"dbname"
w zwykłym języku SQL. Dodatkowo otrzymasz sekwencję, klucz podstawowy i informacje o ograniczeniach. Wynik, który możesz - po sprawdzeniu i edycji zgodnie z własnymi potrzebami - zostać ponownie wprowadzony do (tej samej lub innej) bazy danych Postgres:To jest dla UNIX / Linux, ale jestem pewien, że pg_dump istnieje również dla Windows.
źródło