Udostępnij za pośrednictwem


Designing Stored Procedures (Database Engine)

Niemal dowolnego Transact-SQL kod, który może być zapisywany, jak zadanie partia może być użyty do utworzenia procedura przechowywana.

Procedury przechowywane zasady Projektowanie

Zasady projektowania procedury przechowywane są następujące:

  • Definicja CREATE PROCEDURE, sam może zawierać żadnych liczbę i typ instrukcji SQL, z wyjątkiem dla następujących instrukcji.Te nie może być używana w dowolnym miejscu w procedura przechowywana.

    TWORZENIE agregacja

    TWORZENIE REGUŁY

    UTWÓRZ DOMYŚLNE

    TWORZENIE SCHEMATU

    CREATE lub ALTER funkcja

    CREATE lub ALTER TRIGGER

    CREATE lub ALTER PROCEDURE

    CREATE lub ALTER VIEW

    ZESTAW PARSEONLY

    ZESTAW SHOWPLAN_ALL

    ZESTAW SHOWPLAN_TEXT

    ZESTAW SHOWPLAN_XML

    UŻYCIE database_name

     

  • Pozostałe obiekty bazy danych mogą być tworzone w ramach procedura przechowywana.Można odwoływać się do obiektu utworzonego w tej samej procedura przechowywana, tak długo, jak jest on tworzony przed odwołuje się do.

  • Można odwoływać się do tabel tymczasowych w ramach procedura przechowywana.

  • Po utworzeniu lokalnej tabela tymczasowa w procedurze przechowywanej tabela tymczasowa istnieje tylko w celach procedura przechowywana; go znika po zakończeniu procedury przechowywanej.

  • Jeśli wykonać procedura przechowywana, który wywołuje innej procedura przechowywana, o nazwie procedura przechowywana może uzyskać dostęp do wszystkich obiektów utworzonych przez pierwszej procedura przechowywana, łącznie z tabel tymczasowych.

  • If you execute a remote stored procedure that makes changes on a remote instance of Microsoft SQL Server, those changes cannot be rolled back.Zdalne procedur przechowywanych nie brać udział w transakcji.

  • Maksymalna liczba parametrów w procedura przechowywana jest 2100.

  • Maksymalna liczba zmiennych lokalnych w procedurze przechowywanej jest ograniczona jedynie przez ilość dostępnej pamięci.

  • W zależności od dostępnej pamięci maksymalny rozmiar procedura przechowywana jest 128 megabajtów (MB).

Kwalifikowanie nazwy wewnątrz procedur przechowywanych

Wewnątrz procedura przechowywana obiektu nazw używanych w instrukcjach (na przykład SELECT lub INSERT), które nie są kwalifikowane schematu domyślnego schematu procedura przechowywana.Jeśli użytkownik, który tworzy procedura przechowywana nie kwalifikuje się nazwy tabel lub widoków, do którego odwołuje się SELECT, instrukcje INSERT, UPDATE lub DELETE procedura przechowywana, dostęp do tych tabel za pomocą procedura przechowywana jest ograniczone domyślnie do twórcy procedury.

Nazwy obiektów z wszystkich instrukcji definicja danych Language (DDL), takie jak CREATE, ALTER, lub DROP instrukcji, DBCC instrukcji, wykonać i dynamicznych instrukcji SQL powinny zostać zakwalifikowane o nazwie schematu obiektu innym użytkownikom w przypadku używania procedura przechowywana.Określanie nazwy schematu dla tych obiektów gwarantuje nazwa jest rozpoznawany jako ten sam obiekt niezależnie od tego, który rozmówca procedura przechowywana.Jeżeli nie określono nazwy schematu, SQL Server próbuje rozpoznać nazwę obiektu, najpierw przy użyciu domyślnego schematu obiektu wywołującego lub użytkownika, określone w wykonać AS klauzula a dbo schematu.

Definicje procedur obfuscating

Aby przekonwertować na format obfuscated oryginalny tekst instrukcja CREATE PROCEDURE, należy użyć opcji WITH szyfrowanie.Dane wyjściowe obfuscation nie jest bezpośrednio widoczne w dowolnym systemie tabele lub widoki SQL Server 2008: Użytkownicy, którzy nie mają dostępu do tabele systemowe, widoki systemowe lub pliki bazy danych nie można pobrać obfuscated tekstu. Tekst jest jednak dostępne dla użytkowników uprzywilejowanym bezpośredni dostęp do plików bazy danych.Tych użytkowników będzie mógł odtworzyć obfuscation pobrać oryginalny tekst definicja procedura przechowywana.

Opcje instrukcja zestaw

The Database Engine saves the settings of both zestaw QUOTED_IDENTIFIER and zestaw ANSI_NULLS when a Transact-SQL procedura przechowywana is created or altered. Odpowiednie uprawnienia są wymagane, aby zaznaczyć obiekty, do którego odwołuje się w klauzula SELECT widoku, który jest tworzony.Dlatego wszelkie ustawienia sesja klient zestaw QUOTED_IDENTIFIER i zestaw ANSI_NULLS są ignorowane podczas wykonywania procedura przechowywana.Instrukcje zestaw QUOTED_IDENTIFIER i zestaw ANSI_NULLS, które pojawiają się w procedurze przechowywanej nie mają wpływu na funkcjonalność procedura przechowywana.

Inne opcje, takie jak zestaw ARITHABORT zestaw, zestaw ANSI_WARNINGS lub ANSI_PADDINGS zestaw nie są zapisywane podczas tworzenia lub zmiany procedura przechowywana.Jeśli logika procedura przechowywana jest zależne od określonych ustawień, należy dołączyć instrukcja zestaw na początku procedury, aby zapewnić prawidłowe ustawienie.Po wykonaniu instrukcja zestaw z procedura przechowywana, to ustawienie obowiązuje tylko do zakończenia procedura przechowywana.Ustawienie jest następnie przywrócone do wartości, jakie obowiązywały przy jej, gdy procedura przechowywana została wywołana.Pozwala to klientom indywidualne zestaw chciał opcje bez wpływu na logiki procedura przechowywana.

Uwaga

Nośnik zabezpieczony hasłem może zostać zastąpiony tylko przez ponowne sformatowanie.Na przykład jeśli zmienna jest zdefiniowana jako char(3), a następnie ustaw na wartość większą niż trzy znaki, dane, jest obcinana do określonego rozmiaru i INSERT lub instrukcja UPDATE zakończy się pomyślnie.