Zaprojektowanie procedury przechowywane (aparat bazy danych)

Prawie każdy Transact-SQL kodu mogą być zapisywane jako zadanie partia umożliwia tworzenie procedura składowana.

Zasady projektowania procedur przechowywanych.

Następujące zasady projektowania procedur przechowywanych:

  • Definicja procedury tworzenia samego może zawierać dowolny numer i typ instrukcji SQL, z wyjątkiem dla następujących instrukcji.Te nie można dowolne miejsce w ramach procedura składowana.

    TWORZENIE AGREGACJI

    TWORZENIE REGUŁY

    UTWÓRZ DOMYŚLNE

    TWORZENIE SCHEMATU

    Tworzenie lub zmienianie funkcji

    Tworzenie lub zmienianie WYZWALACZA

    Tworzenie lub zmienianie procedury

    Tworzenie lub zmienianie WIDOKU

    ZESTAW PARSEONLY

    ZESTAW SHOWPLAN_ALL

    ZESTAW SHOWPLAN_TEXT

    ZESTAW SHOWPLAN_XML

    UŻYJ database_name

     

  • Pozostałe obiekty bazy danych mogą być tworzone w ramach procedura składowana.Można odwoływać się obiekt utworzony w tym samym procedura składowana tak długo, jak jest on tworzony przed odwołuje się do.

  • Można odwoływać się do tabeli tymczasowej w procedura składowana.

  • Jeśli tworzysz lokalnego tabela tymczasowa wewnątrz procedura składowana tabela tymczasowa istnieje tylko w celach przechowywanej procedurze; znika po zakończeniu procedura składowana.

  • Jeśli wykonać procedura składowana, która wywołuje innej procedura składowana, wywołana procedura składowana mogą uzyskiwać dostęp do wszystkich obiektów utworzonych przez pierwszy procedura składowana, łą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.Zdalny procedury przechowywane nie uczestniczy w transakcji.

  • Maksymalna liczba parametrów w procedura składowana jest 2100.

  • Maksymalna liczba zmiennych lokalnych w procedura składowana jest ograniczona jedynie przez ilość dostępnej pamięci.

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

Kwalifikowanie nazwy wewnątrz procedury przechowywane

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

Nazwy obiektów z wszystkich instrukcji Data Definition Language (DDL), takie jak tworzenie, ALTER, lub UPUSZCZANIA sprawozdań, DBCC instrukcji, wykonanie i dynamicznych instrukcji SQL powinno być poprzedzone nazwę schematu obiektu innym użytkownikom w przypadku używania procedura składowana.Określanie nazwy schematu dla tych obiektów gwarantuje nazwę rozwiązuje do tego samego obiektu niezależnie od tego, który rozmówca procedura składowana.Jeśli nie określono nazwy schematu, SQL Server spróbuje rozpoznać nazwę obiektu, najpierw przy użyciu domyślnego schematu wywołującego lub użytkownika określonego w jako EXECUTE klauzula a dbo schematu.

Definicje procedur obfuscating

Aby przekonwertować tekst oryginalny instrukcja CREATE PROCEDURE posiadający mylącą format, należy użyć opcji WITH ENCRYPTION.Wyjście zaciemniania nie jest bezpośrednio widoczny w dowolnym tabele systemowe lub widoków w SQL Server 2008: Użytkownicy bez dostępu do tabele systemowe, widoki systemowe lub pliki bazy danych nie można pobrać posiadający mylącą tekstu.Tekst jest jednak dostępne dla użytkowników uprzywilejowany bezpośredni dostęp do plików bazy danych.Tych użytkowników może być niemożliwe do odtworzenia zaciemniania pobrać oryginalny tekst definition procedura składowana.

Ustawianie opcji instrukcji

Aparat baz danych Zapisuje ustawienia zestawu QUOTED_IDENTIFIER i USTAWIĆ ANSI_NULLS, gdy Transact-SQL procedura składowana jest utworzony lub zmieniony.Oryginalne ustawienia te są używane podczas wykonywania procedura składowana.Dlatego wszelkie ustawienia sesja klient QUOTED_IDENTIFIER zestaw i ustawianie ANSI_NULLS, są ignorowane podczas wykonywania procedura składowana.Instrukcje USTAWIĆ QUOTED_IDENTIFIER i USTAWIĆ ANSI_NULLS, występujących w procedurze przechowywanej nie mają wpływu na funkcjonalność procedura składowana.

Inne opcje, takie jak zestaw ARITHABORT zestawu, zestaw ANSI_WARNINGS lub USTAWIĆ ANSI_PADDINGS są włączane nie są zapisywane podczas tworzenia lub zmiany procedura składowana.Jeśli logika procedura składowana jest zależne od danego ustawienia, należy dołączyć instrukcja SET w chwili rozpoczęcia procedury zapewniające prawidłowe ustawienie.Podczas wykonywania instrukcja SET z procedura składowana ustawienie obowiązuje tylko do momentu kończy procedura składowana.Ustawienie jest następnie przywrócone miał, gdy została wywołana procedura składowana wartość.Pozwala to klientom poszczególnych zestaw chciał opcje bez wpływu na logiki procedura składowana.

Ostrzeżenie

Nie jest honorowane ANSI_WARNINGS, przekazując parametry procedura składowana, funkcja zdefiniowanej przez użytkownika lub deklarowania i ustawiania zmiennych w instrukcja partia.Na przykład, jeśli zmienna jest zdefiniowana jako char(3) a następnie zestaw na wartość większą niż trzy znaki, jest obcinana danych zdefiniowany rozmiar i WSTAW lub instrukcja UPDATE zakończy się pomyślnie.