我有一个带有大量视图的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
答案 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') ...