我正在尝试使用SQL Server Profiler来运行跟踪,以跟踪一些“幕后故事”'我们使用的一个软件所执行的操作已不再有效或受到支持,但我们需要我们的工作。部分软件使用SQLExpress,因此我们的理论是,如果我们可以改变SQL表,SP等,我们就可以修复程序。我们无法访问源代码。
我正在尝试跟踪一个特定的表,比如dbo.VAL,以确定其数据来自何处。我可以在程序运行后看到SQL中的最终表,并且运行的跟踪中有许多与表相关的语句,但它们都没有填充它(第一个语句创建它为一张空表)。但是,决赛桌显然包含数据。
我的问题是,在跟踪运行时,该软件是否有任何方式可能将数据插入到表中,而这些数据不会显示在跟踪上?我使用了默认选项进行了我的第一次跟踪并尝试了一些其他选项,但是当我为跟踪打开太多选项时,软件会停止运行,而且我不知道哪些选项对我有用出。 (每次运行需要30分钟,因此尝试所有组合并不可行......)
进一步的信息:
这些是与此特定表相关的跟踪中显示的语句,为方便起见编号:
1.
if object_id('[dbo].[VAL]','u') is not null
drop table [dbo].[VAL]
create table [dbo].[VAL] (
[field1] bigint,
[field2] varchar(2000),
[field3] varchar(2000),
[field4] varchar(100),
[field4] varchar(50)
)
2.
CREATE VIEW [dbo].[Table1]
AS
WITH CTE_ErrorOutput AS (
SELECT 'Data1' AS [Fielda1],[Fielda2],[Fielda3],[Fielda4],[Fielda4],[Fielda4] FROM [dbo].[Table2]
UNION ALL
SELECT 'Data2' AS [field1],[field2],[field3],[field4],[field5],[field6] FROM [dbo].[VAL]
UNION ALL
[[etc.]]
),
CTE_2 AS (
[[etc.]]
)
SELECT * FROM CTE_ErrorOutput
UNION ALL
SELECT * FROM CTE_2
3.
create view [dbo].[Table3] as
select
Fieldb1,Fieldb2 from
[dbo].[VAL]
4.
SET FMTONLY OFF; SET NO_BROWSETABLE ON; SET FMTONLY ON;Select top 0 * from dbo.VAL SET FMTONLY OFF; SET NO_BROWSETABLE OFF;
5.
select @@trancount; SET FMTONLY ON select * from dbo.VAL SET FMTONLY OFF exec ..sp_tablecollations_100 N'[dbo].[VAL]'
6.
insert bulk dbo.VAL ([field1] BigInt, [field2] VarChar(2000) COLLATE Latin1_General_CI_AS, [field3] VarChar(2000) COLLATE Latin1_General_CI_AS, [field4] VarChar(100) COLLATE Latin1_General_CI_AS, [field5] VarChar(50) COLLATE Latin1_General_CI_AS)
如您所见,1。删除表并将其创建为空,2-3只是使用数据。 4-6,我不太确定他们做了什么,但他们似乎还没有添加到数据中。 sp_tablecollations_100似乎是一个与“插入批量”相关的系统存储过程。我怀疑'插入批量'将数据加载回软件或将数据加载到软件输出的CSV中。
我的目标只是确定在没有在Profiler中看到表格的情况下如何填充表格的可能性。我不一定需要修复它,但在这种情况下,我需要一种方法来确认没有可能通过我可用的工具查看人口事件。