sql-server – 我可以在存储过程中设置默认架构吗?
|
我正在进行StackQL的下一次更新. 我想做的一件事是能够查询多个版本.因此,当我加载十月数据时,我没有删除旧的九月数据库.它还在那里.实际上,您甚至可以通过包含数据库名称来查询它: select top 10 * from SO_Sept09..Posts 当他们开始为ServerFault和SuperUser提供数据时,这将更加重要. 但我不喜欢有一大堆数据库来支持这一点.我宁愿将所有数据放在同一个数据库中,并将每个不同的集合分成它自己的模式.但为了使这成为可能,我需要能够根据传递给存储过程的参数设置默认模式作为运行查询的存储过程的一部分,该参数告诉用户从未来的下拉列表中选择哪个数据库出现在工具栏中. StackQL的查询最终只是传递给exec()函数,如下所示: exec(@QueryText) 我可以在存储过程中做任何事情,或者在QueryText字符串(ala USE [DatabaseName])前面设置查询中使用的默认模式吗? 解决方法这里有各种各样的方法,但不完全是这样.这样做的方法是:>创建一个独特的登录&每个架构的用户 以下脚本演示了这一点: --====== 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' (编辑:均轻资讯网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在sql中对多行进行求和
- sql – 从to_char()输出中删除空白填充
- sql-server – SSD(Raid 1)vs SAS(Raid 10)Sql Server硬件推
- mssql存储过程表名和字段名为变量的实现方案
- sql-server – 未记录的CONVERT样式 – datetime 23
- sql-server – 相当于SQL Server中的Oracle外部表
- sql-server – 可能攻击我的SQL服务器?
- sql – 使用逗号分隔符将单列数据拆分为SSIS中的多个列
- sql-server – 如何将SQL Server死锁报告中的密钥转换为值?
- sql – 在VBA中从Access模块??传递参数时调用存储过程


