代码之家  ›  专栏  ›  技术社区  ›  shsteimer

我可以在SQL Server中强制用户执行某些设置吗?

  •  1
  • shsteimer  · 技术社区  · 15 年前

    我有很多用户对运行SQL Server的数据库进行即席查询。偶尔会有人运行一个查询,当他们检索到10毫米行时,这个查询会长时间锁定系统。

    当一个特定的登录连接时,是否可以设置一些选项?例如。:

    • 事务隔离级别
    • 最大行数
    • 查询超时

    如果这在SQL Server 2000中不可能,在另一个版本中是否可能?据我所知,资源管理器不提供这样的控制(它只允许您管理内存和CPU)。

    我意识到用户可以自己做很多事情,但如果我能从每个用户的服务器上控制它,那就太棒了。

    显然,我希望将用户从直接的表/视图访问中移开,但目前这不是一个选项。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Joel Coehoorn    15 年前

    StackQL

    CREATE PROCEDURE [dbo].[WebQuery] 
        @QueryText nvarchar(1000)
    AS
    BEGIN
    
        INSERT INTO QueryLogs(QueryText) 
            VALUES(@QueryText)
    
        SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
        SET QUERY_GOVERNOR_COST_LIMIT 15000 
        SET ROWCOUNT 500 
    
        Begin Try
            exec (@QueryText) 
        End Try
        Begin Catch
            SELECT ERROR_NUMBER() AS ErrorNumber, 
                ERROR_MESSAGE() AS ErrorMessage,
                ERROR_PROCEDURE() AS ErrorProcedure,
                ERROR_SEVERITY() AS ErrorSeverity,
                ERROR_LINE() AS ErrorLine,
                ERROR_STATE() AS ErrorState
        End Catch
    
    END
    

    SET

        2
  •  2
  •   RBarryYoung    15 年前