Возникла ошибка «Схема по умолчанию не существует».при выполнении запроса времени выполнения внутри sp с помощью exec () - PullRequest
9 голосов
/ 17 сентября 2010

Я сделал запрос во время выполнения внутри sp, и я превышаю запрос внутри sp, используя exec (), но при создании sp я получаю сообщение об ошибке

The default schema does not exist.

SP:

CREATE PROCEDURE MySP
    @tableName varchar(100)

AS
BEGIN   
    SET NOCOUNT ON;

declare @selectQuery varchar(MAX)

set @selectQuery = 'select * from ' + @tableName

exec(@selectQuery)

end

любезно помогите

Ответы [ 3 ]

16 голосов
/ 17 сентября 2010

Использование CREATE PROCEDURE dbo.MySP

Пользователь, вошедший в систему как пользователь, должен иметь несуществующую схему по умолчанию.

Для DEFAULT_SCHEMA можно задать схему, которой в настоящее время нет в базе данных.

Также вы должны использовать quotename(@tableName) и тип параметра sysname вместо varchar(100), чтобы избежать внедрения SQL или просто ошибок от нестандартных имен объектов.

7 голосов
/ 14 сентября 2015

Вы можете изменить схему по умолчанию:

ALTER USER [YOURDOMAIN\HotTester] WITH DEFAULT_SCHEMA=[dbo]
GO

тогда избегая необходимости включать [dbo]. в ПРОЦЕДУРЕ СОЗДАНИЯ

2 голосов
/ 17 сентября 2010

Вероятно, это связано с тем, что схема по умолчанию, связанная с пользователем, создающим SP, больше не существует или пользователь больше не имеет доступа к схеме.

Хотя я думал, что SQL Server по умолчанию использует схему dbo. Возможно, попытайтесь определить схему для хранимого процесса.

* 1006 например *

Create Procedure dbo.MySP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...