(Transact-SQL) yürütmek

Bir komutu yürütür dize veya karakter dize içinde birTransact-SQLToplu iş veya aşağıdaki modüller biri: Sistem saklı yordamı, kullanıcı tanımlı kullanıcı tanımlı saklı yordam, skaler değerli işlev, veya genişletilmiş saklı yordam.

Security noteSecurity Note:

Bir karakter yürütmek aramadan önce dize, karakter doğrulama dize.Hiçbir zaman yürütmek bir komut değil doğrulanan kullanıcı girdileri oluşturulur.Daha fazla bilgi için bkz:SQL ınjection.

SQL Server yürütmek deyim bağlantılı sunucuya doğrudan komut göndermek için kullanılabilir olacak şekilde genişletir.Ayrıca, bir dize veya komutu yürütüldüğü içerik açık olarak ayarlanabilir.

Topic link iconTransact-SQL sözdizimi kuralları

Execute a stored procedure or function
[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value 
                           | @variable [ OUTPUT ] 
                           | [ DEFAULT ] 
                           }
        ]
      [ ,...n ]
      [ WITH RECOMPILE ]
    }
[;]

Execute a character string
{ EXEC | EXECUTE } 
        ( { @string_variable | [ N ]'tsql_string' } [ + ...n ] )
    [ AS { LOGIN | USER } = ' name ' ]
[;]

Execute a pass-through command against a linked server
{ EXEC | EXECUTE }
        ( { @string_variable | [ N ] 'command_string [ ? ]' } [ + ...n ]
        [ { , { value | @variable [ OUTPUT ] } } [ ...n ] ]
        ) 
    [ AS { LOGIN | USER } = ' name ' ]
    [ AT linked_server_name ]
[;]

Bağımsız değişkenler

  • @return\_status
    Bir modül dönüş durumunu saklayan bir isteğe bağlı bir tamsayı değişken belirtilir.Bir yürütmek deyim kullanılmadan önce bu değişken, toplu iş iş iş, saklı yordam veya işlev bildirilmelidir.

    Tek değerli kullanıcı tanımlı bir işlev, @ çağırmak için kullanılanreturn_statusdeğişken olabilir bir skaler veri türü.

  • module_name
    Tam ya da tam nonfully saklı yordam veya aramak için tek değerli kullanıcı tanımlı işlevin adıdır.Modül adları kuralları ile uyumlu olmalıdırtanımlayıcılar.Genişletilmiş saklı yordam adını her zaman, sunucunun harmanlama ne olursa olsun duyarlıdır.

    Modül çalıştıran kullanıcı modülü sahip olduğu veya bu veritabanında çalıştırmak için uygun izinlere sahip başka bir veritabanında oluşturulan modül çalıştırılabilir.Modül yürütülen başka bir sunucuda çalışanSQL Serverkullanıcı yürütmek modülü (uzaktan erişim) sunucu kullanmak ve modülünde çalıştırmak için uygun izinlere sahipse bu veritabanını.Bir sunucu adı belirtildi, ancak veritabanı adı belirtilmezse,SQL Server Database Enginevarsayılan veritabanı modülünde arar.

  • ; number
    Aynı ada sahip yordamlar gruplandırmak için kullanılan isteğe bağlı bir tamsayı belirtilir.Bu parametre genişletilmiş saklı yordamlar için kullanılır.

    Not

    This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

    Yordam grupları hakkında daha fazla bilgi için bkz:PROCEDURE (Transact-SQL) CREATE.

  • @module\_name\_var
    Modül adı temsil eden yerel olarak tanımlanmış bir değişken adıdır.

  • @parameter
    Parametre için işmodule_namegibi tanımlanan modülü.Parametre adı gerekir önünde tarafından (@) işareti.@ İle kullanıldığındaparameter_name=valueform, parametre adları ve sabitleri gerekmez verilen sırada, bunlar tanımlanan modülü.Ancak, @parameter\_name=valueform, herhangi bir parametre için kullanıldığında, tüm izleyen parametreleri. kullanılmalıdır

    Varsayılan olarak, null parametreleridir.

  • value
    Modül veya doğrudan komut için parametre değeridir.Parametre adı belirtilmezse, parametre değerlerini modülünde tanımlanan sırada girilmesi gerekir.

    Bağlantılı sunucularda doğrudan komut yürütülürken, parametre değerlerini sırasını bağlantılı sunucuya OLE DB sağlayıcısına bağlıdır.Çoğu OLE DB sağlayıcısı, soldan sağa parametre değerleri bağlayın.

    Bir parametre değeri olan bir nesne adı, karakter dizesini veya bir veritabanı adı veya şema adıyla tam, tam adı tek tırnak işareti içine alınmalıdır olur.Bir parametre değeri bir anahtar, anahtar sözcüğü çift tırnak içine alınmalıdır.

    Varsayılan bir modüle tanımlanmışsa, kullanıcı için yürütmek parametre belirtmeden modülü.

    Varsayılan değer de null değerini alabilir.Genellikle, modül tanımı parametre değeri NULL ise alınması gereken eylem belirtir.

  • @variable
    Bir parametre veya dönüş parametre depolayan değişkenin olduğunu.

  • Çıktı:
    Belirleyen bir modül veya komut dize parametre verir.Modül veya komut dizesindeki eşleşen parametre de OUTPUT anahtar sözcüğü kullanılarak oluşturulmuş olması gerekir.Parametre olarak imleç değişkenleri kullandığınızda, bu anahtar sözcüğü kullanın.

    Ifvalue bir bağlantılı sunucu değişiklikleri ilgili karşı yürütülen bir modülün OUTPUT olarak tanımlanırparametergerçekleştirilen modülü. çalışmasının sonunda değişkenine sağlayıcı OLE DB tarafından kopyalanacak

    OUTPUT parametreleri kullanılır; amacıyla diğer deyimleri çağıran toplu iş veya modülü, değeri içinde dönüş değerleri kullanmak için parametre gerekir aktarılan bir değişken olarak gibi @parameter= @variable.OUTPUT belirterek modülünde bir OUTPUT parametresi olarak tanımlanan bir parametre için bir modül yürütülemiyor.OUTPUT kullanarak sabit modülüne geçirilemez; bir değişken adı iade parametresi gerekir.Değişken veri türü olarak bildirilmelidir ve yordamını çalıştırmadan önce bir değer atanmış.

    Ne zaman yürütmek kullanılan karşı uzak saklı yordam veya doğrudan bir komutu çalıştırmak için bir bağlantılı sunucu, OUTPUT parametrelerin herhangi biri (LOB) büyük nesne veri türleri olamaz.

    İade parametreleri olabilir, herhangi bir veri türü dışında LOB veri türleri.

  • Varsayılan
    Modül içinde tanımlandığı şekilde parametrenin varsayılan değeri sağlar.Zaman birimi tanımlanan varsayılan olmayan bir parametre ve herhangi bir parametre için bir değer bekliyor eksik veya bir hata oluşur varsayılan anahtar belirtilir.

  • RECOMPILE İLE
    Yeni bir plan derlenmiş, kullanılan ve modül yürütüldükten sonra atılan zorlar.Varolan bir sorgu planı modülü için ise, bu plan önbellekte kalır.

    Bu seçeneği, sağlama parametre atypical veya verilerin önemli ölçüde değiştiği kullanın.Bu seçenek genişletilmiş saklı yordamlar için kullanılır.Pahalı olduğu için bu seçeneği dikkatli kullanmanız önerilir.

    Not

    İLE yeniden OPENDATASOURCE sözdizimini kullanan bir saklı yordam çağırırken kullanamazsınız.Seçeneği ile yeniden bir four-part nesnesi adı belirtilirse yoksayılır.

  • @string\_variable
    Yerel bir değişken adıdır.@string\_variableolabilir herhangichar,varchar,nchar, ornvarcharveri türü.Bunlar(max)veri türü.

  • [N] ' tsql_string'
    Is a constant string.tsql_string can be any nvarchar or varchar data type.N bulunur, dize yorumlandığını olaraknvarcharveri türü.

  • < Context_specification > AS
    Deyimin yürütüldüğü bağlamını belirtir.Daha fazla bilgi için bkz:Yürütme içeriği'ni anlama.

  • OTURUM AÇMA
    İçerik özellikleri için bir oturumu belirtir.kapsam Kimliğe bürünme, sunucu değil.

  • user
    İçerik özellikleri için geçerli veritabanında bir kullanıcı olduğunu belirtir.kapsam Kimliğe bürünme özelliği geçerli veritabanına sınırlıdır.Bir veritabanı kullanıcısı için bir bağlam değiştirme, kullanıcının sunucu düzeyinde izinleri devralmaz.

    Important noteImportant Note:

    Ancak bağlam değiştirme kullanıcı veritabanında etkin durumda, veritabanı dışındaki kaynaklara erişmek için herhangi bir girişim deyim başarısız olmasına neden olur.Bu USE içerirdatabaseifadeler ve dağıtılmış sorgular, sorgu kullanarak başka bir veritabanına başvuru üç veya dört part tanımlayıcıları.İçerik anahtarı geçerli veritabanı dışındaki kapsamını genişletmek için bkz:yürütmek AS'nı kullanarak veritabanı kimliğe bürünme genişletme.

  • 'name'
    Is a valid user or login name.name must be a member of the sysadmin fixed server role or exist as a principal in sys.database_principals or sys.server_principals, respectively.

    nameNT AUTHORITY\LocalService, NT AUTHORITY\NetworkService veya gibi bir yerleşik hesap olamaz NT AUTHORITY\LocalSystem.

    Daha fazla bilgi için bkz:Bir kullanıcı veya oturum açma adı belirtme daha sonra bu konuda.

  • [N] ' command_string'
    İle bağlantılı sunucuya gönderilmesi için komutu içeren bir sabit dize belirtilir.N bulunur, dize yorumlandığını olarak nvarcharveri türü.

  • [?]
    Gösterir parametreleri için değerleri sağlanacak olan<arg listesi>bir EXEC('…',<arg-list>) AT içinde kullanılan doğrudan komut<linkedsrv>deyim.

  • ATlinked_server_name
    Specifies that command_string is executed against linked_server_name and results, if any, are returned to the client.linked_server_name must refer to an existing linked server definition in the local server.Bağlantılı sunucuları kullanılarak tanımlanırsp_addlinkedserver.

Remarks

Parametreler sağlanan ya da kullanarakvalueya da kullanarakparameter_name=value.Bir işlemin parçası olan bir parametresidir; bu nedenle, bir parametre olarak değiştirilmiş olan daha yeni bir işlem geri alındı, parametresinin değeri olmayan geri önceki, değer.Çağıran için döndürülen değeri her saat saat birimi verir değerdir.

İç içe bir modül başka bir çağrı veya bir ortak dil çalýþma zamaný (CLR) modülü, kullanıcı tanımlı tür veya toplamak başvurarak yönetilen kod yürüten oluşur.İç içe düzey adlı modül veya yönetilen kod başvuru yürütmeye başlar, ve Aranan modül veya yönetilen kod başvuru tamamlandığında indirildiği artırılır.İç içe geçmiş 32 düzeyden fazla aşan tam arama zinciri başarısız olmasına neden olur.Geçerli iç içe düzey @@ NESTLEVEL sistem işlev içinde depolanır.

Uzak saklı yordam ve genişletilmiş saklı yordam içinde değildir, çünkü kapsam hareketi (bir dağıtılmış BEGIN TRANSACTION deyim içinde verilen sürece veya çeşitli yapılandırma seçenekleri ile birlikte kullanıldığında), onları çağrı ile çalıştırılan komutları edemiyor toplu geri.Daha fazla bilgi için bkz:Yordam (Transact-SQL) sistem saklıvedağıtılmış işlem (Transact-SQL) BEGIN.

Bir imleç için ayrılmış olan bir imleç değişken geçen bir yordam yürütmek, imleç değişkenleri kullandığınızda bir hata oluşur.

Birinci toplu iş iş deyim ise modülleri yürütürken yürütmek anahtar belirtmeniz gerekmez.

yürütmek ile Saklý Yordamlarý Kullanma

Saklı yordamlar, deyim birinci toplu iş iş. yürütmek, yürütmek, anahtar gerekmez

SQL Server Sistem yordamları başlangıç ile karakter sp_who saklı.Fiziksel olarak depolananKaynak veritabanı, ancak her sistem ve kullanıcı tanımlı veritabanı. sys şemasında mantıksal olarakZaman, yürütmek toplu ya da kullanıcı tanımlı bir saklı yordam veya işlev gibi bir modül içinde bir sistem saklı yordamı sys şema adı saklı yordam adıyla nitelemeniz öneririz.

SQL Server Sistem saklı yordamları Başlangıç karakteri xp_ olan Genişletilmiş ve bu asıl veritabanı dbo şemada yer alır.Zaman, yürütmek genişletilmiş Sistem saklı yordamı, bir toplu iş veya iç kullanıcı tanımlı bir saklı yordam veya işlev gibi bir modül master.dbo saklı yordam adıyla nitelemeniz öneririz.

Kullanıcı tanımlı saklı yordam, toplu iş veya kullanıcı tanımlı bir saklı yordam veya işlev gibi bir modül içinde çalıştırdığınızda şema adı saklı yordam adıyla nitelemeniz öneririz.sistem saklı yordamı aynı ada sahip bir kullanıcı tanımlı bir saklı yordam adı önerilmez.Saklı yordamları çalıştırma hakkında daha fazla bilgi için bkz:Yürütülen Saklý Yordamlarý (Veritabanı Altyapısı).

yürütmek bir karakter dizesi ile kullanma

Önceki sürümlerindeSQL Serverkarakter dizeleridir sınırlı, 8.000 bayt. içinBu geniş dinamik yürütme dizeleri bitiştirme gerektirir.In SQL Server, the varchar(max) and nvarchar(max) data types can be specified that allow for character strings to be up to 2 gigabytes of data.

Veritabanı içeriğinde değişiklikler son yürütmek deyiminin sonuna kadar.Sonra örneğinEXECBu deyim aşağıdaki çalıştırmak, veritabanı içeriği ana olan

USE master; EXEC ('USE AdventureWorks; SELECT EmployeeID, Title FROM HumanResources.Employee;');

İçeriği değiştirme

KullanabileceğinizAS { LOGIN | USER } = ' name 'Yan geçiş yürütme içeriği dinamik bir deyim.İçerik geçiş olarak belirtilirEXECUTE ('string') AS <context_specification>, bağlam değiştirme süresi için yürütülen sorgunun kapsamını sınırlıdır.Daha fazla bilgi için bkz:Içerik geçişi'nı anlama.

Bir kullanıcı veya oturum açma adı

Kullanıcı veya oturum açma adı belirtildiAS { LOGIN | USER } = ' name 'gerekir, yoksa sys.database_principals veya sys.server_principals, bir patron olarak veya deyim edecek başarısız.Ayrıca asıl özelliklerini al izinleri verilmelidir.Arayan veritabanı sahibi veya sysadmin sabit sunucu rolünün bir üyesi olmadıkça patron gerekir var bile, kopyası ve veritabanı kullanıcı erişimiSQL ServerWindows ile grup üyeliği.Örneğin, aşağıdaki koşullar varsayalım:

  • CompanyDomain\SQLUsers Grup erişebileceğini satış veritabanı.

  • CompanyDomain\SqlUser1 SQLUsers bir üye ve bu nedenle, dolaylı satış veritabanına erişebilir.

Ancak CompanyDomain\SqlUser1 üyeliğiyle SQLUsers grubunda, deyim veritabanına erişimi vardır EXECUTE @string\_variable AS USER = 'CompanyDomain\SqlUser1'çünkü başarısız olurCompanyDomain\SqlUser1bir veritabanı. sorumlusu olarak yok

En iyi yöntemler

Bir oturum açma veya deyim veya modülü içinde tanımlanan işlemleri gerçekleştirmek için gereken en az ayrıcalıklara sahip bir kullanıcı belirtin.Örneğin, veritabanı düzey izinleri gereklidir; yalnızca sunucu düzeyinde izinleri olan oturum açma adı belirtmezseniz veya bu izinleri gerekli olmadığı sürece bir veritabanı sahibi hesabını belirtin.

İzinler

yürütmek deyim çalıştırmak için izinleri gereklidir.Ancak, izinlerin içinde yürütmek başvurulan securables gerekli olan dize.Örneğin, dize içeren bir INSERT deyim yürütmek deyiminin arayan hedef tablo üzerinde INSERT iznine sahip olmalısınız.yürütmek deyim içinde bir modül eklenmiş olsa da, izinlerini yürütmek deyim karşılaşıldığında, saat kontrol edilir.

Bunları diğer kullanıcılara aktarma modülü, sahibine modülü varsayılan izinlerini yürütmek.Bir modül çalıştırdığınızda, bir dize yürütür, izinleri modülü yürüten kullanıcının bağlamında, birimi oluşturan kullanıcının bağlamında değil denetlenir.Aynı kullanıcı arama modülü ve çağrılan modülünün sahipse, ancak yürütmek izni denetimi için ikinci modül yapılmaz.Daha fazla bilgi için bkz:Sahiplik chains.

Modülü diğer veritabanı nesnelerini erişirse, yürütmek modülü, yürütmek izni ve aşağıdakilerden biri doğru olduğunda başarılı:

  • Modül yürütmek AS USER veya SELF olarak işaretlenmiş ve modül sahibi başvurulan nesnenin ilgili izinleri vardır.

  • yürütmek AS ARAYAN modüle işaretlenir ve ilgili izinleri nesne üzerinde sahip.

  • Modül olarak yürütmek ASuser_name, veuser_namevarsa ilgili izinleri nesne.

İçerik izinlerini değiştirme

Oturum açma yürütmek AS belirtmek için arayan belirtilen oturum açma adına özelliklerini al izinleri olmalıdır.Arayan, bir veritabanı kullanıcı yürütmek AS belirtmek için belirtilen kullanıcı adına özelliklerini al izinleri olmalıdır.Özelliklerini al izinleri yok yürütmek içeriği belirtilen ya da yürütmek AS ARAYAN belirtilen gerekli değildir.

Örnekler

C.Tek bir parametre iletmek için yürütmek'ı kullanma

The uspGetEmployeeManagers stored procedure expects one parameter (@EmployeeID).Aşağıdaki örnekleri çalıştırmak uspGetEmployeeManagerssaklı yordamıEmployee ID 6parametre değeri.

USE AdventureWorks;
GO
EXEC dbo.uspGetEmployeeManagers 6;
GO

Değişken yürütme açık olarak adlandırılabilir:

EXEC dbo.uspGetEmployeeManagers @EmployeeID = 6;
GO

Aşağıdaki ilk deyim, bir toplu iş olup olmadığını veyaOsql veya sqlcmd komut dosyası ÇALIŞTIRILAMADI gerekli değildir.

dbo.uspGetEmployeeManagers 6;
GO
--Or
dbo.uspGetEmployeeManagers @EmployeeID = 6;
GO

B.Birden çok parametre kullanma

Aşağıdaki örnekte yürütenspGetWhereUsedProductIDsaklı yordam.İki parametre geçirmeden: bir ürün kimliği ilk parametredir ( 819) ve ikinci parametre olan @CheckDate,olan bir datetimedeğer.

USE AdventureWorks;
GO
DECLARE @CheckDate datetime;
SET @CheckDate = GETDATE();
EXEC dbo.uspGetWhereUsedProductID 819, @CheckDate;
GO

C.yürütmek 'tsql_string' değişkeni ile kullanma

Aşağıdaki örnekte gösterildiği nasılEXECUTEtutamaçları dinamik olarak oluşturulan dizeleri içeren değişken.Bu örnek oluştururtables_cursortüm kullanıcı tanımlı Tablo listesini tutmak için imleçAdventureWorksveritabanı ve sonra tablolar. tüm dizinleri yeniden oluşturmak için liste kullanır

USE AdventureWorks;
GO
DECLARE tables_cursor CURSOR
   FOR
   SELECT s.name, t.name 
   FROM sys.objects AS t
   JOIN sys.schemas AS s ON s.schema_id = t.schema_id
   WHERE t.type = 'U';
OPEN tables_cursor;
DECLARE @schemaname sysname;
DECLARE @tablename sysname;
FETCH NEXT FROM tables_cursor INTO @schemaname, @tablename;
WHILE (@@FETCH_STATUS <> -1)
BEGIN;
   EXECUTE ('ALTER INDEX ALL ON ' + @schemaname + '.' + @tablename + ' REBUILD;');
   FETCH NEXT FROM tables_cursor INTO @schemaname, @tablename;
END;
PRINT 'The indexes on all tables have been rebuilt.';
CLOSE tables_cursor;
DEALLOCATE tables_cursor;
GO

D.yürütmek uzak saklı yordam ile kullanma

Aşağıdaki örnekte yürütenuspGetEmployeeManagerssaklı yordam uzak sunucudaSQLSERVER1döndürülen durum başarı veya hata belirten saklar@retstat.

DECLARE @retstat int;
EXECUTE @retstat = SQLSERVER1.AdventureWorks.dbo.uspGetEmployeeManagers @EmployeeID = 6;

E.Bir saklı yordam değişkenle yürütmek'ı kullanma

Aşağıdaki örnek, saklı yordam adını gösteren bir değişken oluşturur.

DECLARE @proc_name varchar(30);
SET @proc_name = 'sys.sp_who';
EXEC @proc_name;

F.Varsayılan ile yürütmek'ı kullanma

Aşağıdaki örnek, birinci ve üçüncü parametreler için varsayılan değerleri bir saklı yordam oluşturur.Yordamı çalıştırdığınızda, bu varsayılan değer çağrı gönderilir veya varsayılan değer belirlendiğinde, birinci ve üçüncü parametreler için eklenir.Çeşitli şekillerde NotDEFAULTanahtar kullanılabilir.

The Proc_Test_Defaults stored procedure can be executed in many combinations.

G.Linked_server_name yürütmek ile kullanma

Aşağıdaki örnek bir komut dizesi, bir uzak sunucuya geçirir.bağlantılı sunucu oluştururSeattleSalesbaşka bir örnek için bu noktalarıSQL Serverve bir DDL yürüten deyim ( CREATE TABLE) karşı bağlı.

EXEC sp_addlinkedserver 'SeattleSales', 'SQL Server'
GO
EXECUTE ( 'CREATE TABLE AdventureWorks.dbo.SalesTbl 
(SalesID int, SalesName varchar(10)) ; ' ) AT SeattleSales;
GO

H.yürütmek ile RECOMPILE kullanma

Aşağıdaki örnekte yürütenProc_Test_Defaultssaklı yordam zorlar derlenmesi için yeni bir sorgu planını kullanılan ve modül yürütüldükten sonra atılır.

EXECUTE dbo.Proc_Test_Defaults @p2 = 'A' WITH RECOMPILE;
GO

I.Kullanıcı tanımlı bir işlev ile yürütmek'ı kullanma

Aşağıdaki örnekte yürütenufnGetSalesOrderStatusTextskaler kullanıcı tanımlı işlev.Değişken kullanır@returnstatussaklamak değer verilen işlev.İşlev, bir giriş parametresi bekliyor@Status.Olarak tanımlanan bu birtinyintveri türü.

USE AdventureWorks;
GO
DECLARE @returnstatus nvarchar(15);
SET @returnstatus = NULL;
EXEC @returnstatus = dbo.ufnGetSalesOrderStatusText @Status = 2;
PRINT @returnstatus;
GO

J.bağlantılı sunucu üzerinde bir Oracle veritabanını sorgulamak için yürütmek'ı kullanma

Aşağıdaki örnekte çeşitli yürütürSELECTifadeleri en uzak Oracle.Örneğin, Oracle Sunucusu bağlantılı bir sunucu ekleme ve bağlantılı sunucu oturumu oluşturma başlar.

-- Setup the linked server.
EXEC sp_addlinkedserver  
        @server='ORACLE',
        @srvproduct='Oracle',
        @provider='OraOLEDB.Oracle', 
        @datasrc='ORACLE10';

EXEC sp_addlinkedsrvlogin 
    @rmtsrvname='ORACLE',
    @useself='false', 
    @locallogin=null, 
    @rmtuser='scott', 
    @rmtpassword='tiger';
 
EXEC sp_serveroption 'ORACLE', 'rpc out', true;
GO
 
-- Execute several statements on the linked Oracle server.
EXEC ( 'SELECT * FROM scott.emp') AT ORACLE;
GO
EXEC ( 'SELECT * FROM scott.emp WHERE MGR = ?', 7902) AT ORACLE;
GO
DECLARE @v INT; 
SET @v = 7902;
EXEC ( 'SELECT * FROM scott.emp WHERE MGR = ?', @v) AT ORACLE;
GO

K.yürütmek AS kullanarak kullanıcı başka bir kullanıcı içeriğinde geçiş yapma

Aşağıdaki örnekte yürüten birTransact-SQLbir tablo oluşturur ve belirten dizeAS USERYan geçiş çağırana ekstresindeki yürütme içeriğiUser1.The Database Engine will check the permissions of User1 when the statement is run.User1 must exist as a user in the database and must have permission to create tables in the Sales schema, or the statement fails.

USE AdventureWorks;
GO
EXECUTE ('CREATE TABLE Sales.SalesTable (SalesID int, SalesName varchar(10));')
AS USER = 'User1';
GO

L.yürütmek ve linked_server_name AT parametre kullanma

Aşağıdaki örnek bir komut dizesi soru işareti kullanarak bir uzak sunucuya iletir ( ?) yer tutucu için bir parametreBu örnek, bir sunucunun oluştururSeattleSalesbaşka bir örneği için bu noktalarıSQL Serverve yürüten birSELECTdeyim karşı bağlı.The SELECT statement uses the question mark as a place holder for the ProductID parameter (952), which is provided after the statement.

-- Setup the linked server.
EXEC sp_addlinkedserver 'SeattleSales', 'SQL Server'
GO
-- Execute the SELECT statement.
EXECUTE ('SELECT ProductID, Name 
    FROM AdventureWorks.Production.Product
    WHERE ProductID = ? ', 952) AT SeattleSales;
GO