sp_executesql,用户定义的表类型不能与两个数据库一起使用

时间:2016-02-10 14:28:33

标签: sql sql-server sql-server-2008

我尝试使用来自不同数据库(名为Database1和Database2的hier)的public function handle($request, \Closure $next) { $response = $next($request); if (last(explode('\\',get_class($response))) != 'RedirectResponse') { $response->header('P3P', 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); } return $response; } 并执行variables语句。

sp_executesql

在我的 USE Database1 DECLARE @testVariable BIT = 1 USE Database2 DECLARE @Param1 t_ID DECLARE @Param2 t_ID DECLARE @Param3 VARCHAR(100) = '01.01.2010' DECLARE @Param4 VARCHAR(100) = '31.12.2015' DECLARE @Param5 VARCHAR(100) = '1' DECLARE @Param6 VARCHAR(100) = 'EUR' DECLARE @ParamDefinition NVARCHAR(1000) = '' DECLARE @SQLString NVARCHAR(1000) = '' DECLARE @SQLObject VARCHAR(100) = '' INSERT INTO @Param1 VALUES (1) ,(345), (123) INSERT INTO @Param2 VALUES (106) SET @SQLObject = 'Database2.dbo.Testfunction2' SET @SQLString = 'SELECT * FROM ' + @SQLObject + '(@Param1, @Param2, @Param3, @Param4, @Param5, @Param6)' SET @ParamDefinition = '@Param1 t_ID READONLY, @Param2 t_ID READONLY, @Param3 VARCHAR(100), @Param4 VARCHAR(100), @Param5 VARCHAR(100), @Param6 VARCHAR(100)' IF @testVariable = 1 BEGIN EXECUTE sp_executesql @SQLString, @ParamDefinition, @Param1, @Param2, @Param3, @Param4, @Param5, @Param6 END 声明中,我还有两个 变量 ,其中包含用户定义的表格类型sp_executesql@Param1 t_ID。此类型在两个数据库中都创建。 如果我评论@Param2 t_ID并运行上面的代码,以便我只在一个数据库(Database2)中保留整个过程,则没有错误, 但是当我尝试使用两个数据库运行相同的过程时:--USE Database1USE Database1,我收到了兼容性错误:

USE Database2

Msg 206, Level 16, State 2, Procedure PROC_Test, Line 0

我做错了什么?有没有解决问题的方法?

0 个答案:

没有答案