0
我在SQL Server 2008中,如存储过程:SQL Server在存储过程中如何查找对象名称?
CREATE PROCEDURE [dbo].[test]
AS
BEGIN
SET NOCOUNT ON;
SELECT user_name();
SELECT SCHEMA_NAME()
SELECT * FROM MyView
END
我有一个名为testuser.MyView视图。
exec as user = 'testuser' exec test
这说明user_name和SCHEMA_NAME都被设置为TESTUSER 但我也得到一个Invalid object name 'MyView'.
消息,作为SP仍然在dbo架构查找视图名称:然后我用调用SP 。
有没有办法改变SP的执行方式,这样MyView对象引用testuser.MyView而不必使用完全限定名称?
我想在不同模式的相同表结构上使用一组很多存储过程。我真的希望避免使用动态SQL重写所有SP,或者使用限定名称创建所有SP的副本。
谢谢丹。我担心可能会是这样。 SP非常复杂,其中有很多,所以我想避免100个重复的SP。我想擦除和重建所有脚本都是唯一的解决方案。 – geographika