Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да направите INSERT преминаваща заявка в SQL Server

В SQL Server можете да използвате OPENQUERY за изпълнение на преходна заявка на свързан сървър.

OPENQUERY обикновено се споменава в FROM клауза на заявка, сякаш е таблица, но може да се посочи и като целева таблица на INSERT , UPDATE или DELETE изявление.

Тази статия представя пример за използване на OPENQUERY за да направите INSERT преминаваща заявка.

Пример

Да кажем, че създадохме таблица на свързания сървър, наречен Cats , в база данни, наречена Pets .

Нещо като това:

EXEC ('
    USE  [Pets];
    CREATE TABLE [dbo].[Cats](
        [CatId] [int] IDENTITY(1,1) NOT NULL,
        [CatName] [varchar](60) NULL
    ) ON [PRIMARY];
') AT Homer;

И сега искаме да вмъкнем данни с помощта на INSERT преминаваща заявка.

Можем да го направим така:

INSERT OPENQUERY (
    Homer, 
    'SELECT CatName FROM Pets.dbo.Cats'
    )
VALUES 
    ( 'FluffDupp' ),
    ( 'Scratch' ),
    ( 'Long Tail' );

В този случай свързаният сървър се нарича Homer , и вмъкваме три стойности в Pets.dbo.Cats таблица.

Проверете резултатите

Вече можем да изпълним SELECT преминаваща заявка, за да видите резултатите.

SELECT * FROM OPENQUERY (
    Homer, 
    'SELECT * FROM Pets.dbo.Cats'
    );

Резултат:

+---------+-----------+
| CatId   | CatName   |
|---------+-----------|
| 1       | FluffDupp |
| 2       | Scratch   |
| 3       | Long Tail |
+---------+-----------+

Обърнете внимание, че OPENQUERY не приема променливи за своите аргументи.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Активиране на поща от база данни в SQL Server (T-SQL)

  2. Какви са разликите между клъстериран и неклъстериран индекс?

  3. Microsoft обявява SQL Server 2012 R2 и SQL Server 2012 R3!

  4. Как да проверите дали изчислената колона е „постоянна“ в SQL Server

  5. Кодът на Entity Framework е бавен, когато се използва Include() много пъти