INSERT (Transact-SQL)
Dodaje nowe wiersze tabela lub widoku w SQL Server 2008 R2.Aby zapoznać się z przykładami, zobacz WSTAW przykłady (Transact-SQL).
Składnia
-- Standard INSERT syntax
[ WITH <common_table_expression> [ ,...n ] ]
INSERT
{
[ TOP ( expression ) [ PERCENT ] ]
[ INTO ]
{ <object> | rowset_function_limited
[ WITH ( <Table_Hint_Limited> [ ...n ] ) ] }
{
[ ( column_list ) ]
[ <OUTPUT Clause> ]
{ VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ]
| derived_table
| execute_statement
| <dml_table_source>
| DEFAULT VALUES
}
}
}
[; ]
-- External tool only syntax
INSERT
{
[BULK]
[ database_name . [ schema_name ] . | schema_name . ]
[ table_name | view_name ]
( <column_definition> )
[ WITH (
[ [ , ] CHECK_CONSTRAINTS ]
[ [ , ] FIRE_TRIGGERS ]
[ [ , ] KEEP_NULLS ]
[ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]
[ [ , ] ROWS_PER_BATCH = rows_per_batch ]
[ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]
[ [ , ] TABLOCK ]
) ]
}
[; ]
<object> ::=
{
[ server_name . database_name . schema_name .
| database_name .[ schema_name ] .
| schema_name .
]
table_or_view_name
}
<dml_table_source> ::=
SELECT <select_list>
FROM ( <dml_statement_with_output_clause> )
[AS] table_alias [ ( column_alias [ ,...n ] ) ]
[ WHERE <search_condition> ]
[ OPTION ( <query_hint> [ ,...n ] ) ]
<column_definition> ::=
column_name <data_type>
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
<data type> ::=
[ type_schema_name . ] type_name
[ ( precision [ , scale ] | max ]
Argumenty
Z <common_table_expression>
Określa tymczasowym o nazwie zestaw wyników, znane również jako wspólne tabela wyrażenie, zdefiniowany w zakres instrukcjaINSERT.zestaw wyników wywodzi się z instrukcjaSELECT.Typowe wyrażenia tabela można również z instrukcji SELECT, DELETE, aktualizacji, korespondencji seryjnej i tworzenia WIDOKU.Aby uzyskać więcej informacji, zobacz Z common_table_expression (języka Transact-SQL).
TOP (expression) [ PERCENT ]
Określa numer lub procent losowe wierszy, które będą wstawiane.expressionmoże to być liczba lub procent wierszy.Wiersze w GÓRNEJ wyrażenie , które są używane z INSERT, UPDATE lub DELETE nie są rozmieszczone w dowolnej kolejności.Nawiasy rozgraniczającego expression w góry są wymagane INSERT, UPDATE i usuwanie instrukcji.Aby uzyskać więcej informacji, zobacz U góry (Transact-SQL).
DO
Jest opcjonalne słowa kluczowego, które mogą być używane między WSTAW i miejsce docelowe tabela.server_name
Jest nazwą serwer połączony , na którym znajduje się tabela lub widok.server_name można określić jako serwer połączony nazwa, lub za pomocą OPENDATASOURCE funkcja.Gdy server_name jest określony jako serwer połączony database_name i schema_name są wymagane.Gdy server_name jest określany za pomocą OPENDATASOURCE, database_name i schema_name nie mają zastosowania wszystkie źródła danych i jest z zastrzeżeniem możliwościdostawca OLE DB, który uzyskuje dostęp do obiektu zdalnego. Aby uzyskać więcej informacji, zobacz Kwerend rozproszonych.
database_name
Jest to nazwa bazy danych.schema_name
Jest to nazwa schematu, do której należy dany tabela lub widoku.table_or view_name
Jest nazwą tabela lub widoku, który ma otrzymać dane.A tabela zmienną w jego zakresmoże być używany jako tabela źródło w INSERT instrukcja.
Widok odwołuje się table_or_view_name należy aktualizowalna i odniesienia dokładnie jeden tabela bazowa w klauzula FROM widoku.Na przykład, należy użyć WSTAWIANIA do widokutabela multi - column_list odwołujący się tylko kolumny z jednej tabela bazowa.Aby uzyskać więcej informacji na temat widoków aktualizowalna zobacz CREATE VIEW (Transact-SQL).
rowset_function_limited
Jest OTWÓRZKWERENDĘ lub OPENROWSET funkcja.Korzystanie z tych funkcji jest z zastrzeżeniem możliwościdostawca OLE DB, który uzyskuje dostęp do obiektu zdalnego. Aby uzyskać więcej informacji, zobacz Kwerend rozproszonych.Z ()<table_hint_limited> [... n ] )
Określa wskazówki tabela , które są dozwolone dla miejsce docelowe tabela.Słowo kluczowe z i nawiasy są wymagane.READPAST, NOLOCK i READUNCOMMITTED nie są dozwolone.Aby uzyskać więcej informacji na temat wskazówek dotyczących tabela , zobacz Wskazówki tabel (Transact-SQL).
Ważne: Możliwość określenia wskazówki HOLDLOCK, SERIALIZABLE, parametr READCOMMITTED, REPEATABLEREAD lub UPDLOCK na tabele, które są obiektami docelowymi instrukcji INSERT zostaną usunięte w przyszłej wersja programu SQL Server.Te wskazówki nie ma wpływu na wydajność instrukcji INSERT.Plan do modyfikowania aplikacji, które używają obecnie i uniknąć używania ich w nowych prac rozwojowych.
Określanie wskazówka TABLOCK w tabela miejsce docelowe INSERT instrukcja działa tak samo jak określanie wskazówki TABLOCKX.blokada na wyłączność jest pobierana z tabela.
(column_list)
Jest to lista kolumn, w którym chcesz wstawić dane.column_listmuszą być ujęte w nawiasy i rozdzielane przecinkami.Jeśli kolumna nie jest w column_list, Aparat baz danych musi być w stanie podać wartość na podstawie definicji kolumna; w przeciwnym razie nie można załadować wiersza.Aparat baz danych Automatycznie udostępnia wartość dla kolumna , jeśli kolumna:
Ma tożsamość właściwość.Następna wartość przyrostowe tożsamości jest używana.
Ma wartość domyślną.Używana jest wartość domyślna dla kolumna .
Ma timestamp typu danych.Używana jest aktualna wartość sygnatury czasowej.
Jest nullable.Używana jest wartość null .
To kolumnaobliczana.Obliczona wartość jest używana.
column_lista lista wartości muszą być używane jawne wartości są wstawiane do kolumna, a opcja Ustaw IDENTITY_INSERT musi być w tabela.
Klauzula wyjścia
Zwraca wstawiła wiersze w ramach operacji wstawiania.wyniki mogą być zwracane do aplikacji przetwarzającej lub wstawione do tabela lub zmiennej tabela do dalszego przetwarzania.Dane wyjściowe klauzula nie jest obsługiwany w sprawozdaniu DML , odwołujące się do lokalnych widoków podzielonym na partycje, rozproszonych widoki podzielonym na partycje lub tabele zdalnego lub instrukcji INSERT, które zawierają execute_statement.Dane wyjściowe do klauzula nie jest obsługiwany w instrukcji INSERT, które zawierają <dml_table_source> klauzula.
VALUES
Wprowadzono listy lub listy wartości danych do wstawienia.Musi być jedną wartość danych dla każdej kolumna w column_list, jeśli określony lub w tabela.Lista wartości muszą być ujęte w nawiasy.Jeżeli wartości na liście wartości nie są w tej samej kolejności jako kolumny w tabela lub nie mają wartości dla każdej kolumna w tabela column_list muszą być używane do jawnie określić kolumna , który przechowuje każde przychodzące wartości.
Można użyć Transact-SQL wiersz konstruktora (nazywane również konstruktora wartość tabela ) do określania wielu wierszy w jednej instrukcjaINSERT.Konstruktor wierszy składa się z pojedynczej wartości klauzula wiele list wartości ujęte w nawiasy i oddzielone przecinkami.Aby uzyskać więcej informacji, zobacz Tabela wartości konstruktora (Transact-SQL).
DOMYŚLNE
Siły Aparat baz danych do załadowania wartości domyślnej kolumna.Jeśli domyślny nie istnieje dla kolumna i kolumna dozwolone są wartości null , dodaje się wartość NULL.Dla kolumna zdefiniowane za pomocą timestamp Typ danych następna wartość sygnatury czasowej jest wstawiany.Domyślnie nie jest prawidłowy dla kolumna.expression
Jest stała, zmienna lub wyrażenie.wyrażenie nie może zawierać wykonywanie instrukcja.Przy odwoływaniu się do znaków Unicode okreolana nchar, nvarchar, i ntext, "wyrażenie" być poprzedzona ciągiem Wielka litera n ".Jeśli 'N' nie jest określony, SQL Server ciąg jest konwertowany na strona kodowa odpowiada domyślnym sortowanie bazy danych lub kolumna.Wszystkie znaki nie znaleziono w tej strona kodowa zostaną utracone. Aby uzyskać więcej informacji, zobacz Programowania po stronie serwera w Unicode.
derived_table
Jest to Dowolna prawidłowa wybierz instrukcja zwracająca wiersze danych, które mają być ładowane do tabela.instrukcja SELECT nie może zawierać wspólne tabelawyrażenie (CTE).execute_statement
Jest to Dowolna prawidłowa wykonywanie instrukcja zwraca dane z instrukcji SELECT lub READTEXT.Jeśli execute_statement jest używana z WSTAWIĆ, każdego zestaw wyników muszą być zgodne z kolumnami w tabela lub w column_list.
execute_statementSłuży do wykonać przechowywanych procedur na tym samym serwerze lub serwerze zdalnym.Wykonanie procedury w serwerze zdalnym i zestawy wyników są zwracane do serwera lokalnego i ładowane do tabela w lokalnym serwerze.transakcja rozproszona execute_statement nie może wydać sprzężenia zwrotnego serwer połączony , kiedy połączenie ma wiele zestawów w wyniku active (MARS) włączone.
Jeśli execute_statement zwraca dane z READTEXT instrukcjakażdej READTEXT instrukcja może zwracać maksymalnie 1 MB (1024 KB) danych.execute_statementmożna również z rozszerzonych procedur.execute_statementWstawia dane zwrócone przez główny wątek rozszerzone procedury; Jednak dane wyjściowe z wątków innego niż główny wątek nie są wstawiane.
Nie można określić w tabela-parametr wyceniane jako miejsce docelowe WSTAW EXEC instrukcja; jednak może być określona jako źródło w WSTAW EXEC ciąg lub procedura przechowywana.Aby uzyskać więcej informacji, zobacz Parametry oródwierszową (aparat bazy danych).
<dml_table_source>
Określa, że wiersze wstawione dotabela miejsce docelowesą zwracane przez dane wyjściowe klauzula INSERT, UPDATE, DELETE lub SCALIĆ instrukcja, opcjonalnie filtrowane według klauzulaWHERE. Jeśli <dml_table_source> określono miejsce docelowe zewnętrzne instrukcja INSERT musi spełniać następujące ograniczenia:Musi być tabela bazowa, nie w widoku.
Nie można go tabela zdalna.
Nie może mieć żadnych wyzwalaczy zdefiniowany na nim.
Nie może on uczestniczyć w wszelkie podstawowy klucz— relacjeklucz obcy .
Nie może on uczestniczyć w replikacja scalająca lub aktualizowalna subskrypcji dla replikacjatransakcyjnej.
poziom zgodności bazy danych musi być zestaw 100 lub wyższej.Aby uzyskać więcej informacji, zobacz Klauzula wyjściowy (Transact-SQL).
<select_list>
Jest rozdzielana przecinkami lista określająca, kolumny, które są zwracane przez wyjściowy klauzula do wstawienia.Kolumny w <select_list> musi być zgodna z kolumn, do których wstawiane są wartości.<select_list> nie może odwoływać się do funkcji wartość zagregowana lub TEXTPTR.Ostrzeżenie
Wszystkie zmienne wymienione na liście wybierz odnoszą się do ich oryginalnych wartości, niezależnie od zmian wprowadzonych do nich w <dml_statement_with_output_clause>.
<dml_statement_with_output_clause>
Jest ważne DELETE INSERT, UPDATE lub SCALIĆ instrukcja zwraca wpływa na wiersze w danych wyjściowych klauzula.instrukcja nie może zawierać z klauzulai nie miejsce docelowe zdalnego tabel lub widoków podzielonym na partycje.Jeżeli określono aktualizacji lub usunięcia nie może być kursor-na podstawie aktualizacji lub usunięcia.Jako zagnieżdżonych instrukcji DML nie odwołuje się do wierszy źródłowych.W przypadku gdy <search_condition>
Jest każdym gdzie klauzula zawierającego nieprawidłowe <search_condition> , filtry wierszy zwracanych przez <dml_statement_with_output_clause>.Aby uzyskać więcej informacji, zobacz Warunek wyszukiwania (Transact-SQL).W tym kontekście, <search_condition> nie może zawierać podkwerendy, wartość skalarna funkcji zdefiniowanej przez użytkownika, wykonujących dostępu do danych, funkcji wartość zagregowana , TEXTPTR lub predykaty przeszukiwanie pełnego tekstu .WARTOŚCI DOMYŚLNE
Wymusza nowy wiersz zawiera wartości domyślne zdefiniowane dla każdej kolumna.LUZEM
Używane przez zewnętrzne narzędzia do przekazywania strumienia danych binarnych.Ta opcja nie jest przeznaczony do użycia z narzędzia takie jak SQL Server Management Studio, polecenie SQLCMD, OSQL lub dostępu do danych interfejsów programowania aplikacji, takich jak SQL Server macierzystego klienta.FIRE_TRIGGERS
Określa dowolny Wstaw wyzwalaczy zdefiniowane wtabela obiekt docelowy,wykonać podczas operacji wysyłania strumienia danych binarnych. Aby uzyskać więcej informacji, zobacz BULK INSERT (Transact-SQL).CHECK_CONSTRAINTS
Określa, że wszystkie ograniczenia w miejsce docelowe tabela lub widoku muszą być sprawdzone podczas operacji wysyłania strumienia danych binarnych.Aby uzyskać więcej informacji, zobacz BULK INSERT (Transact-SQL).KEEPNULLS
Określa puste kolumny powinny zachować wartość null podczas operacji wysyłania strumienia danych binarnych.Aby uzyskać więcej informacji, zobacz Przechowywanie wartości null lub przy użyciu wartości domyślnych podczas importu zbiorczego.KILOBYTES_PER_BATCH = kilobytes_per_batch
Określa przybliżoną liczbę kilobajtów (KB) danych na partia jako kilobytes_per_batch.Aby uzyskać więcej informacji, zobacz BULK INSERT (Transact-SQL).ROWS_PER_BATCH =rows_per_batch
Oznacza przybliżoną liczbę wierszy danych w strumieniu danych binarnych.Aby uzyskać więcej informacji, zobacz BULK INSERT (Transact-SQL).Uwaga błąd składni jest uruchamiany, jeśli nie podano listy kolumna .
Najważniejsze wskazówki
Użyj @@ ROWCOUNT funkcja zwraca liczbę wierszy dodaje do klient.Aby uzyskać więcej informacji, zobacz @@ ROWCOUNT (Transact-SQL).
Najważniejsze wskazówki dotyczące masowych importowania danych
Za pomocą INSERT INTO...Zaznacz, aby luzem importowanie danych z minimalnym rejestrowania
Można WSTAWIĆ do <target_table> zaznacz <kolumny> od <source_table> do efektywnego transferu dużą liczbę wierszy z jednej tabela, takich jak tymczasowej tabelado innej tabela przy minimalnym rejestrowania.Minimalny rejestrowania można zwiększyć wydajność instrukcja i zmniejszyć możliwość operacji wypełniania miejsca w dzienniku transakcji dostępne podczas transakcji.
Minimalny, rejestrowanie dla tej instrukcja ma następujące wymagania:
Modelu odzyskiwanie bazy danych jest zestaw na proste lub bulk-logged.
miejsce docelowetabela jest pusta lub niepustą sterty.
miejsce docelowetabela nie jest używany w replikacja.
Wskazówka TABLOCK jest określona dla miejsce docelowe tabela.
Wiersze, które są wstawiane do sterty jako wynik Wstaw akcja w korespondencji seryjnej instrukcja może również minimalny rejestrowane.
W przeciwieństwie do WSTAWIANIA ZBIORCZEGO instrukcja, które posiada mniej restrykcyjne aktualizacji zbiorczej blokada, INSERT INTO...Wybierz z TABLOCK ładowni Wskazówka blokada tabelawyłączności (X).Oznacza to, że nie można wstawić wiersze, używając równoległa operacje.Aby uzyskać więcej informacji na temat blokady zobacz Tryby Lock.
Za pomocą OPENROWSET i luzem do masowych importowanie danych
funkcja OPENROWSET może zaakceptować następujące wskazówki tabela , które zapewniają optymalizacje obciążenia luzem z instrukcjaINSERT:
Wskazówka TABLOCK można zminimalizować liczbę rekordów dziennika dla operacji wstawiania.Modelu odzyskiwanie bazy danych musi być zestaw na proste lub bulk-logged i miejsce docelowe tabela nie można używać w replikacja.Aby uzyskać więcej informacji, zobacz Wymagania wstępne dotyczące minimalnych logowanie importu zbiorczego.
Wskazówka IGNORE_CONSTRAINTS można tymczasowo wyłączyć klucz OBCY i sprawdzić sprawdzanie ograniczenia.
Wskazówka IGNORE_TRIGGERS można tymczasowo wyłączyć wykonywania wyzwalacza.
Wskazówka KEEPDEFAULTS umożliwia wstawiania tabela kolumnawartość domyślna, ewentualne zamiast wartości NULL, gdy rekord danych brakuje wartości w kolumna.
Wskazówka KEEPIDENTITY umożliwia wartości tożsamości w pliku importowane dane używane do identyfikacji kolumna wtabela miejsce docelowe.
Optymalizacje te są podobne do tych, które są dostępne przy użyciu polecenia WSTAW luzem.Aby uzyskać więcej informacji, zobacz Wskazówki tabel (Transact-SQL).
Typy danych
Podczas wstawiania wierszy należy wziąć pod uwagę następujące zachowanie typ danych:
Jeśli wartość jest ładowany w kolumnach z char, varchar, lub varbinary typu danych, uzupełnienie lub obcięcie końcowe spacje (pomieszczenia dla char i varchar, zer dla varbinary) jest określona przez ustawienie spowodowałyby zestaw zdefiniowanych dla kolumna podczas tworzenia tabela .Aby uzyskać więcej informacji, zobacz Ustaw spowodowałyby (Transact-SQL).
W poniższej tabela przedstawiono operację domyślne ustawienie spowodowałyby off.
Typ danych
Operacja domyślna
char
Konsola wartość ze spacjami do określonych szerokości kolumna.
varchar
Usuń końcowe pomieszczenia do ostatniego znaku-space lub odstęp, pojedynczy znak ciągi składające się z samych spacji.
varbinary
Usuń końcowe zera.
Jeżeli pusty ciąg (" ') jest ładowany do kolumna z varchar lub text typu danych, operacja domyślna jest załadowanie ciągo zerowej długości.
Wstawianie wartość null w text lub image kolumna nie utworzy wskaźnik prawidłowe tekstu, ani nie jest wstępnie Przydziel 8 KB tekstu strona.Aby uzyskać więcej informacji o wstawianiu text i image danych, zobacz Za pomocą tekst, ntext i image funkcje.
Łamy utworzone za pomocą uniqueidentifier Typ danych przechowują specjalnie sformatowany 16-bajtowy binarne wartości.W przeciwieństwie do kolumny tożsamości Aparat baz danych nie generuje automatycznie wartości dla kolumn z uniqueidentifier typu danych.Podczas wykonywania operacji wstawiania zmiennych z danymi typu uniqueidentifier i stałych ciąg w postaci xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (36 znaków z kreskami, gdzie x jest cyfrą szesnastkową z zakres 0-9 lub a-f) może być używany dla uniqueidentifier kolumny.Na przykład, 6F9619FF-8B86-D011-B42D-00C04FC964FF jest prawidłową wartością dla uniqueidentifier zmienną lub kolumna.Użycie NEWID() funkcja uzyskiwania globalnie unikatowy identyfikator (GUID).
Wstawianie wartości do kolumn typu zdefiniowane przez użytkownika
Można wstawić wartości w kolumnach typ zdefiniowany przez użytkownika przez:
Podanie wartości typ zdefiniowany przez użytkownika.
Podanie wartości w SQL Server Typ danych systemu, tak długo, jak typ zdefiniowany przez użytkownika obsługuje bezpośrednia lub pośrednia konwersja z tego typu.Poniższy przykład ilustruje sposób wstawić wartość w kolumna typ zdefiniowany przez użytkownika Point, konwertując jawnie z ciąg.
INSERT INTO Cities (Location) VALUES ( CONVERT(Point, '12.3:46.2') );
Wartość binarna mogą być dostarczane bez wykonywania konwersja jawna, ponieważ wszystkie typy zdefiniowane przez użytkownika są niejawnie konwertowane binarnej.Aby uzyskać więcej informacji dotyczących konwersji i typy zdefiniowane przez użytkownika, zobacz Wykonywanie operacji na typy zdefiniowane przez użytkownika.
Wywoływanie przez użytkownika funkcja zwraca wartość typ zdefiniowany przez użytkownika.W poniższym przykładzie użyto funkcjazdefiniowanej przez użytkownikaCreateNewPoint() do utworzenia nowej wartości typ zdefiniowany przez użytkownika Point i Wstaw wartość do Citiestabela.
INSERT INTO Cities (Location) VALUES ( dbo.CreateNewPoint(x, y) );
Obsługa błędów
obsługa błędów instrukcja INSERT można zaimplementować określając instrukcja w TRY…CATCH konstrukcji.Aby uzyskać więcej informacji, zobacz Za pomocą SPRÓBOWAĆ...POŁOWU w języku Transact-SQL.
Jeśli INSERT instrukcja narusza ograniczenie lub reguły lub ma wartość niezgodny z typem danych kolumna, instrukcja nie powiedzie się i zwracany jest komunikat o błędzie.
Ładowanie WSTAW wiele wierszy z SELECT lub wykonywanie, wszelkie naruszenie reguły lub ograniczenia, które występuje od wartości ładowane powoduje, że instrukcja zatrzymanie i wiersze nie są ładowane.
Podczas WSTAWIANIA instrukcja napotka błąd arytmetyczny (przepełnienia, dzielenie przez zero lub błąd domena ) występujących w trakcie oceny wyrażenie Aparat baz danych obsługuje te błędy, tak jakby ustawienie ARITHABORT jest zestaw na.partia jest zatrzymana i zwracany jest komunikat o błędzie.W trakcie oceny wyrażenie gdy Ustaw ARITHABORT i USTAWIĆ ANSI_WARNINGS OFF, jeśli INSERT, DELETE lub UPDATE instrukcja napotka błąd arytmetyczne, przepełnienia, dzielenie przez zero lub błąd domena SQL Server Wstawia lub aktualizuje wartość NULL.miejsce docelowekolumna nie jest nullable, insert lub update akcja kończy się niepowodzeniem, a użytkownik otrzymuje błąd. Aby uzyskać więcej informacji, zobacz Zachowanie przy ARITHABORT i ARITHIGNORE są ustawione na.
Współdziałanie
Po zdefiniowaniu wyzwalacza INSTEAD OF na skargi WSTAW tabela lub widok wyzwalacza wykonuje zamiast instrukcjaINSERT.Aby uzyskać więcej informacji na temat zamiast wyzwalaczy, zobacz CREATE TRIGGER (Transact-SQL).
Ograniczenia i ograniczenia
Podczas wstawiania wartości do zdalnego tabel, a nie wszystkie wartości wszystkich kolumn są określone, należy określić kolumny, do których są określone wartości ma zostać wstawiony.
Ustawienie opcji ustaw ROWCOUNT jest ignorowany dla instrukcji INSERT przed lokalnymi i zdalnymi widoki podzielonym na partycje.Ponadto ta opcja nie jest obsługiwana dla instrukcji INSERT wydane przeciwko zdalnego tabel.
Ważne: |
---|
Za pomocą zestawu ROWCOUNT nie wpłynie na instrukcji DELETE, INSERT i UPDATE w przyszłej wersji programu SQL Server.Nie należy USTAWIĆ ROWCOUNT z instrukcji DELETE, INSERT i UPDATE w nowych prac rozwojowych i plan do modyfikowania aplikacji, które obecnie korzystają.Zaleca się, aby użyć klauzula TOP. |
Zachowanie blokowania
INSERT instrukcja zawsze uzyskuje blokada tabela , modyfikuje i posiada tej blokada do zakończenia transakcji wyłączności (X).Za pomocą wyłączności (X) blokadainne transakcje można modyfikować danych; odczytać operacji może odbywać się jedynie przy użyciu wskazówka NOLOCK lub Odczyt nieprzekazany poziom izolacji.Aby uzyskać więcej informacji, zobacz Blokowanie w aparacie bazy danych.
Sposób rejestrowania
instrukcja INSERT rejestrowany jest zawsze całkowicie z wyjątkiem korzystania OPENROWSET funkcja ze słowem kluczowym luzem lub przy użyciu INSERT INTO <target_table> zaznacz <kolumny> od <source_table>.Działania te mogą być rejestrowane minimalny.Aby uzyskać więcej informacji zobacz sekcję "Najlepsze praktyki dla masowych ładowania danych" wcześniej w tym temacie.
Zabezpieczenia
Podczas połączenia z serwer połączony serwera wysyłającego zawiera nazwę logowania i hasło, aby połączyć serwer odbiorczy w jego imieniu.Dla tego połączenia do pracy należy utworzyć mapowanie logowania między serwerów połączonych za pomocą sp_addlinkedsrvlogin.Aby uzyskać więcej informacji, zobacz Zabezpieczenia dla serwerów połączonych.
Podczas korzystania z OPENROWSET(BULK…) jest ważne, aby zrozumieć, jak SQL Server uchwyty personifikacji.Aby uzyskać więcej informacji zobacz sekcję "Uwagi zabezpieczeń" in Importowanie danych luzem za pomocą ZBIORCZYM WSTAWIANIEM lub OPENROWSET(BULK...).
Uprawnienia
Uprawnienia do WSTAWIANIA jest wymagana wtabela miejsce docelowe.
WSTAW domyślnych uprawnień dla członków sysadmin stała rola serwera db_owner i db_datawriter stałe role bazy danych i tabela właściciela.Członkowie sysadmin, db_owneroraz db_securityadmin , role, a właściciel tabela można przenieść uprawnienia do innych użytkowników.
wykonać WSTAW opcji OPENROWSET funkcja luzem, musi być element członkowski sysadminstała rola serwera lub bulkadminstała rola serwera.
Zobacz także