কিছু ক্ষেত্রে ক্যোয়ারী স্টোর একটি নির্বাচিত বিবৃতি এবং একই অধিবেশনে প্রভাব হিসাবে লিখতে পারে।
এটি নিম্নলিখিত হিসাবে পুনরুত্পাদন করা যেতে পারে:
USE master;
GO
CREATE DATABASE [Foo];
ALTER DATABASE [Foo] SET QUERY_STORE (OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 30),
DATA_FLUSH_INTERVAL_SECONDS = 900,
INTERVAL_LENGTH_MINUTES = 60,
MAX_STORAGE_SIZE_MB = 100,
QUERY_CAPTURE_MODE = ALL,
SIZE_BASED_CLEANUP_MODE = AUTO);
USE Foo;
CREATE TABLE Test (a int, b nvarchar(max));
INSERT INTO Test SELECT 1, 'string';
পর্যবেক্ষণের জন্য একটি বর্ধিত ইভেন্টস সেশন তৈরি করুন:
CREATE EVENT SESSION [Foo] ON SERVER
ADD EVENT sqlserver.rpc_completed(SET collect_data_stream=(1)
ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.client_pid,sqlserver.database_name,sqlserver.is_system,sqlserver.server_principal_name,sqlserver.session_id,sqlserver.session_server_principal_name,sqlserver.sql_text)
WHERE ([writes]>(0))),
ADD EVENT sqlserver.sql_batch_completed(SET collect_batch_text=(1)
ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.client_pid,sqlserver.database_name,sqlserver.is_system,sqlserver.server_principal_name,sqlserver.session_id,sqlserver.session_server_principal_name,sqlserver.sql_text)
WHERE ([writes]>(0)))
ADD TARGET package0.event_file(SET filename=N'C:\temp\FooActivity2016.xel',max_file_size=(11),max_rollover_files=(999999))
WITH (MAX_MEMORY=32768 KB,EVENT_RETENTION_MODE=ALLOW_MULTIPLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=ON,STARTUP_STATE=OFF);
এরপরে নিম্নলিখিতটি চালান:
WHILE @@TRANCOUNT > 0 COMMIT
SET IMPLICIT_TRANSACTIONS ON;
SET NOCOUNT ON;
GO
DECLARE @b nvarchar(max);
SELECT @b = b FROM dbo.Test WHERE a = 1;
WAITFOR DELAY '00:00:01.000';
GO 86400
একটি অন্তর্নিহিত লেনদেন এটি পুনরুত্পাদন করার প্রয়োজন হতে পারে বা নাও পারে।
ডিফল্টরূপে, পরের ঘন্টা শীর্ষে কোয়েরি স্টোরের পরিসংখ্যান সংগ্রহের কাজ ডেটা লিখবে। এটি প্রদর্শিত হয় (কখনও কখনও?) এক ঘন্টা সময় কার্যকর হওয়া প্রথম ব্যবহারকারী ক্যোয়ারির অংশ হিসাবে ঘটে। বর্ধিত ইভেন্টস সেশনটি নীচের মতো কিছু দেখায়:
লেনদেন লগ ঘটেছিল যে লেখাগুলি দেখায়:
USE Foo;
SELECT [Transaction ID], [Begin Time], SPID, Operation,
[Description], [Page ID], [Slot ID], [Parent Transaction ID]
FROM sys.fn_dblog(null,null)
/* Adjust based on contents of your transaction log */
WHERE [Transaction ID] IN ('0000:0000042c', '0000:0000042d', '0000:0000042e')
OR [Parent Transaction ID] IN ('0000:0000042c', '0000:0000042d', '0000:0000042e')
ORDER BY [Current LSN];
পৃষ্ঠাটি পর্যালোচনা করে DBCC PAGE
দেখায় যে লেখাগুলি হ'ল sys.plan_persist_runtime_stats_interval
।
USE Foo;
DBCC TRACEON(3604);
DBCC PAGE(5,1,344,1); SELECT
OBJECT_NAME(229575856);
নোট করুন যে লগ এন্ট্রিগুলি তিনটি নেস্টেড লেনদেন দেখায় তবে কেবল দুটি কমিট রেকর্ড করে। উত্পাদনের অনুরূপ পরিস্থিতিতে, এটি একটি তর্কযুক্ত ত্রুটিযুক্ত ক্লায়েন্ট লাইব্রেরির দিকে পরিচালিত করেছিল যা অপ্রত্যাশিতভাবে লিখিত লেনদেন শুরু করে, লেনদেন লগকে সাফ হওয়া থেকে রোধ করে imp লাইব্রেরিটি কেবল একটি আপডেট চালানো, সন্নিবেশ করানো বা বিবৃতি মোছার পরে কোনও প্রতিশ্রুতি জারি করতে লেখা হয়েছিল, সুতরাং এটি কখনও কোনও কমিট আদেশ দেয়নি এবং লিখিত লেনদেন উন্মুক্ত রাখেনি।