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

Мога ли да задам схема по подразбиране за в рамките на съхранена процедура?

Тук има части за това как да направите това на различни места, но не изцяло. Начинът да направите това е:

  1. Направете уникално вход и потребител за всяка схема

  2. Направете тези потребители собственици на всяка различна схема.

  3. Задайте схемата по подразбиране на всеки такъв потребител да бъде схемата, която притежава.

  4. Използвайте синтаксиса EXECUTE ('sql commands') AS USER = 'schema-owner' за да изпълните вашите SQL команди в контекста на тази схема по подразбиране.

Следният скрипт демонстрира това:

--====== Create the Login for the User:
CREATE LOGIN [UserTest1] WITH PASSWORD='whatever', DEFAULT_DATABASE=[TestUsers], DEFAULT_LANGUAGE=[us_english]
GO

--====== Make a User for the Login:
CREATE USER [UserTest1] FOR LOGIN [UserTest1]
GO

--====== Make a Schema owned by the User and default to it:
--        (I assume that you already have the schemas)
CREATE SCHEMA [UserTest1] AUTHORIZATION [UserTest1]
GO
ALTER USER [UserTest1] WITH DEFAULT_SCHEMA=[UserTest1]
GO

--====== Make a sProc in dbo
CREATE PROCEDURE [dbo].[TestSchema_Exec] AS
    SELECT 'executing in schema [dbo]'
GO
--====== Make a similar sProc in New Schema
CREATE PROCEDURE [UserTest1].[TestSchema_Exec] AS
    SELECT 'executing in schema [UserTest1]'
GO

--========= Demonstrate that we can switch Default Schemas:
EXEC('TestSchema_Exec')

EXEC('TestSchema_Exec') AS USER = 'UserTest1'


  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

  2. SMALLDATETIMEFROMPARTS() Примери в SQL Server (T-SQL)

  3. Как да промените периода на задържане на прихващане на промени (CDC) в SQL Server - урок за SQL Server

  4. Как да направите UPDATE Pass-Through заявка в SQL Server

  5. Как да добавите ограничение по подразбиране към съществуваща колона в SQL Server