SQL:跟踪视图的使用

时间:2014-08-14 07:28:49

标签: sql sql-server view

我有一个带有大量视图的sql数据库(2000+) - 所有这些都只用于阅读,从不更新。许多不同的系统使用此DB,但没有人知道使用了哪种视图。我们无法改变使用theese观点的所有系统 - 给跟踪使用的好主意..请..

我的想法是这样的: 重命名视图,将SProc til插入到跟踪表中,然后调用原始视图。 然后创建一个新视图(名称像原始视图)来调用SProc .. 请查看下面的sql语句

但OPENQUERY会正确地给我结果,但不会插入

请帮助......:)

以下是我的想法的一些信息

DB:            Cum_Test
Table          AA12345Table
View:          Cum1V
select * from  AA12345Table


First:          rename old view til Cum1V_old

Then:    New SProc
             CREATE PROCEDURE Pr_Cum1V
             AS
             BEGIN
                               SET NOCOUNT ON;
                               INSERT INTO TableTrace VALUES(GETDATE(),'Cum1V')
                               SELECT * FROM dbo.Cum1V_old;
             END            

and
CREATE VIEW Cum1v as
select * FROM OPENQUERY(LOCALSERVER,'exec Cum_Test.dbo.cPr')

并记住

 EXEC sp_addlinkedserver @server = 'LOCALSERVER',  @srvproduct = '',
 @provider = 'SQLOLEDB', @datasrc = @@servername

1 个答案:

答案 0 :(得分:0)

只是解决方案的草稿:

1创建在文本文件中记录数据的函数:

create function record_usage (@view_name as varchar) returns int
as 
begin
    declare @cmd varchar(1000);
    select @cmd = 'echo ' + @view_name + '  >> c:\test.txt'
    exec master..xp_cmdshell @cmd

    return 0
end

2 ...并在你的观点中使用它:

select a,b,c,d,e,f, dbo.record_usage('Cum1V') ...
  1. 现在只想找到避免重复的方法