আমার সঞ্চিত পদ্ধতিগুলির জন্য একটি এসকিউএল সার্ভার ২০০৮ সন্ধান করতে হবে যেখানে সম্ভবত কোনও ডাটাবেস ক্ষেত্রের নাম বা পরিবর্তনশীল নাম রয়েছে।
আমার সঞ্চিত পদ্ধতিগুলির জন্য একটি এসকিউএল সার্ভার ২০০৮ সন্ধান করতে হবে যেখানে সম্ভবত কোনও ডাটাবেস ক্ষেত্রের নাম বা পরিবর্তনশীল নাম রয়েছে।
উত্তর:
SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%Foo%'
AND ROUTINE_TYPE='PROCEDURE'
SELECT OBJECT_NAME(id)
FROM SYSCOMMENTS
WHERE [text] LIKE '%Foo%'
AND OBJECTPROPERTY(id, 'IsProcedure') = 1
GROUP BY OBJECT_NAME(id)
SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules
WHERE OBJECTPROPERTY(object_id, 'IsProcedure') = 1
AND definition LIKE '%Foo%'
নিজেকে বিনামূল্যে রেড-গেট এসকিউএল অনুসন্ধান সরঞ্জামটির একটি অনুলিপি ধরুন এবং এসকিউএল সার্ভারে অনুসন্ধান উপভোগ করতে শুরু করুন! :-)
এটি একটি দুর্দান্ত এবং খুব দরকারী সরঞ্জাম, এবং হ্যাঁ! এটি সম্পূর্ণরূপে, যে কোনও ধরণের ব্যবহারের জন্য একেবারে বিনামূল্যে।
আপনি অ্যাপেক্সএসকিউএল অনুসন্ধানও চেষ্টা করতে পারেন - অ্যাপেক্সএসকিউএল থেকে বিনামূল্যে এসএসএমএস প্লাগ-ইন করতে পারেন ।
আমি কাশিফের উত্তর নিয়েছি এবং তাদের সবাইকে একত্রিত করেছি। আশ্চর্যজনকভাবে, কখনও কখনও, আমি নির্বাচিতগুলির মধ্যে একটিতে ফলাফল পেয়েছি তবে অন্যটি নয়। তাই নিরাপদে থাকার জন্য, আমি যখন কিছু খুঁজছি তখন আমি সমস্ত 3 চালাই। আশাকরি এটা সাহায্য করবে:
DECLARE @SearchText varchar(1000) = 'mytext';
SELECT DISTINCT SPName
FROM (
(SELECT ROUTINE_NAME SPName
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%' + @SearchText + '%'
AND ROUTINE_TYPE='PROCEDURE')
UNION ALL
(SELECT OBJECT_NAME(id) SPName
FROM SYSCOMMENTS
WHERE [text] LIKE '%' + @SearchText + '%'
AND OBJECTPROPERTY(id, 'IsProcedure') = 1
GROUP BY OBJECT_NAME(id))
UNION ALL
(SELECT OBJECT_NAME(object_id) SPName
FROM sys.sql_modules
WHERE OBJECTPROPERTY(object_id, 'IsProcedure') = 1
AND definition LIKE '%' + @SearchText + '%')
) AS T
ORDER BY T.SPName
SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%FieldName%'
AND ROUTINE_TYPE='PROCEDURE'
[whatever]
করবে whatever
(আপনি যখন স্কিমা-যোগ্য সনাক্তকারীদের সন্ধান করছেন তখন আরও গুরুত্বপূর্ণ হয়ে ওঠে) সন্দেহ করি doubt
আমি উপরোক্ত উদাহরণ দিয়ে চেষ্টা করেছি তবে এটি 4000 টিরও বেশি অক্ষর দেখায় নি তখন আমি এটিকে কিছুটা সংশোধন করে পুরো স্টোরেজ পদ্ধতির সংজ্ঞা পেতে সক্ষম হয়েছি। নীচে আপডেট স্ক্রিপ্ট দেখুন -
SELECT SCHEMA_NAME(O.SCHEMA_ID) [SCHEMA_NAME], O.NAME, OBJECT_DEFINITION(OBJECT_ID) TEXT
FROM SYSCOMMENTS AS C
INNER JOIN SYS.OBJECTS AS O ON C.ID = O.[OBJECT_ID]
INNER JOIN SYS.SCHEMAS AS S ON O.SCHEMA_ID = S.SCHEMA_ID
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%FOO%'
ORDER BY SCHEMA_NAME(O.SCHEMA_ID), O.NAME
প্রথমে নিশ্চিত হয়ে নিন যে আপনি আপনার ব্যবহারকারীর শংসাপত্রগুলির অধীনে কোয়েরিটি চালাচ্ছেন এবং সঠিক ডাটাবেস প্রসঙ্গেও।
USE YOUR_DATABASE_NAME;
অন্যথায়, sys.procedures কিছুই ফেরত না। এখন নীচের মতো ক্যোয়ারী চালান:
select * from sys.procedures p
join sys.syscomments s on p.object_id = s.id
where text like '%YOUR_TEXT%';
অন্য বিকল্পটি হল INFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITION ব্যবহার করা, তবে সচেতন থাকুন যে এটি কেবল রুটিনের সীমিত সংখ্যক অক্ষর (অর্থাত্ প্রথম 4000 অক্ষর) ধারণ করে।
select * from YOUR_DATABASE_NAME.INFORMATION_SCHEMA.ROUTINES
where ROUTINE_DEFINITION like '%YOUR_TEXT%';
আমি মাইক্রোসফ্ট এসকিউএল সার্ভার 2008 আর 2 (এসপি 1) - 10.50.2500.0 (এক্স 64) এ পরীক্ষা করেছি
select * from sys.system_objects
where name like '%cdc%'
এখানে ইউনিয়ন সংস্করণটি লসবারের তৈরি, তবে পরিবর্তিত হয়েছে যাতে এটি স্কিমাটির নামও প্রকাশ করে:
DECLARE @SearchText varchar(1000) = 'searchtext';
SELECT DISTINCT sc.SPECIFIC_SCHEMA as 'Schema', sp.SPName as 'Name'
FROM (
(SELECT ROUTINE_NAME SPName
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%' + @SearchText + '%'
AND ROUTINE_TYPE='PROCEDURE')
UNION ALL
(SELECT OBJECT_NAME(id) SPName
FROM SYSCOMMENTS
WHERE [text] LIKE '%' + @SearchText + '%'
AND OBJECTPROPERTY(id, 'IsProcedure') = 1
GROUP BY OBJECT_NAME(id))
UNION ALL
(SELECT OBJECT_NAME(object_id) SPName
FROM sys.sql_modules
WHERE OBJECTPROPERTY(object_id, 'IsProcedure') = 1
AND definition LIKE '%' + @SearchText + '%')
) AS sp
CROSS APPLY (select SPECIFIC_SCHEMA from INFORMATION_SCHEMA.ROUTINES r where r.ROUTINE_NAME = sp.SPName) sc
ORDER BY 1
পাঠ্য বা স্ট্রিং সহ একটি সঞ্চিত পদ্ধতি কীভাবে সন্ধান করবেন
অনেক সময় আমাদের সঞ্চিত পদ্ধতিতে পাঠ্য বা স্ট্রিংয়ের সন্ধান করতে হবে। সম্বলিত পাঠ্যটি অনুসন্ধানের জন্য এখানে জিজ্ঞাসা করা হয়েছে।
SELECT OBJECT_NAME(id)
FROM SYSCOMMENTS
WHERE [text] LIKE '%Text%'
AND OBJECTPROPERTY(id, 'IsProcedure') = 1
GROUP BY OBJECT_NAME(id)
আরও তথ্যের জন্য দয়া করে নীচে প্রদত্ত URL টি দেখুন।
http://www.freshcodehub.com/Article/34/how-to-find-a-stored-procedure-containing-text-or-string
এসকিউএল সার্ভার 2000 এর চেয়ে নতুন যে কোনও এসকিউএল সার্ভারের জন্য:
SELECT object_name = OBJECT_NAME(sm.object_id), o.type_desc, sm.definition
FROM sys.sql_modules AS sm
JOIN sys.objects AS o ON sm.object_id = o.object_id
WHERE sm.definition like '%searchString%'
ORDER BY o.type, o.name, o.object_id
যদি কেউ এসকিউএল সার্ভার 2000 এর সাথে আটকে থাকে তবে টেবিলের এসকিউএল_মডিউলগুলি বিদ্যমান নেই, সুতরাং আপনি সিসকমেন্টস ব্যবহার করবেন, আপনি 4000 টির বেশি অক্ষরের চেয়ে বেশি সঞ্চিত সংগ্রহের জন্য একাধিক রেকর্ড পাবেন, তবে তাদের একই সি নাম্বার ফিল্ড থাকবে যাতে আপনি গ্রুপ করতে পারেন সম্পূর্ণ সঞ্চিত প্রক্রিয়া পাঠ্য পেতে অংশগুলি একসাথে:
Select o.id, c.number, o.name, c.text
from syscomments c
inner join sysobjects o on o.id = c.id
where c.encrypted = 0 and o.type = 'P'
and c.id in
(Select id from syscomments where text like '%searchtext%')
order by objecttype, o.name, o.id, c.number, c.colid
SELECT name FROM sys.procedures WHERE Object_definition(object_id) LIKE '%FOO%'
create Procedure [dbo].[TextFinder]
(@Text varchar(500),@Type varchar(2)=NULL)
AS
BEGIN
SELECT DISTINCT o.name AS ObjectName,
CASE o.xtype
WHEN 'C' THEN 'CHECK constraint'
WHEN 'D' THEN 'Default or DEFAULT constraint'
WHEN 'F' THEN 'FOREIGN KEY constraint'
WHEN 'FN' THEN 'Scalar function'
WHEN 'IF' THEN 'In-lined table-function'
WHEN 'K' THEN 'PRIMARY KEY or UNIQUE constraint'
WHEN 'L' THEN 'Log'
WHEN 'P' THEN 'Stored procedure'
WHEN 'R' THEN 'Rule'
WHEN 'RF' THEN 'Replication filter stored procedure'
WHEN 'S' THEN 'System table'
WHEN 'TF' THEN 'Table function'
WHEN 'TR' THEN 'Trigger'`enter code here`
WHEN 'U' THEN 'User table'
WHEN 'V' THEN 'View'
WHEN 'X' THEN 'Extended stored procedure'
ELSE o.xtype
END AS ObjectType,
ISNULL( p.Name, '[db]') AS Location
FROM syscomments c
INNER JOIN sysobjects o ON c.id=o.id
LEFT JOIN sysobjects p ON o.Parent_obj=p.id
WHERE c.text LIKE '%' + @Text + '%' and
o.xtype = case when @Type IS NULL then o.xtype else @Type end
ORDER BY Location, ObjectName
END
SELECT s.name + '.' + o.name ProcedureName
, c.text ProcedureSteps
FROM sys.syscomments c
INNER JOIN
sys.objects o
ON
c.id = o.object_id
INNER JOIN
sys.schemas s
ON
o.schema_id = s.schema_id
WHERE o.type = 'P'
AND c.text LIKE N'%XXXX%'
ORDER BY s.name + '.' + o.name
, c.colid
এই ক্যোয়ারী কোনও সঞ্চিত প্রক্রিয়াটির নাম এবং সামগ্রীটি সরবরাহ করে যেখানে "XXXX" সঞ্চিত পদ্ধতির মধ্যে উল্লেখ করা হয়।
সুনির্দিষ্ট সারণী / দর্শন / প্রক্রিয়াটি উল্লেখ করে এমন পদ্ধতিগুলি খুঁজে পাওয়ার সময় এটি ব্যবহারযোগ্য হয়ে যায়
এসপিতে পাঠ্য সন্ধানের জন্য সঞ্চিত পদ্ধতি .. ines দীনেশ বাসকারান nd ট্রেন্ডি গ্লোবাল সিস্টেমস প্রাইভেট লিমিটেড
create Procedure [dbo].[TextFinder]
(@Text varchar(500),@Type varchar(2)=NULL)
AS
BEGIN
SELECT DISTINCT o.name AS ObjectName,
CASE o.xtype
WHEN 'C' THEN 'CHECK constraint '
WHEN 'D' THEN 'Default or DEFAULT constraint'
WHEN 'F' THEN 'FOREIGN KEY constraint'
WHEN 'FN' THEN 'Scalar function'
WHEN 'IF' THEN 'In-lined table-function'
WHEN 'K' THEN 'PRIMARY KEY or UNIQUE constraint'
WHEN 'L' THEN 'Log'
WHEN 'P' THEN 'Stored procedure'
WHEN 'R' THEN 'Rule'
WHEN 'RF' THEN 'Replication filter stored procedure'
WHEN 'S' THEN 'System table'
WHEN 'TF' THEN 'Table function'
WHEN 'TR' THEN 'Trigger'
WHEN 'U' THEN 'User table'
WHEN 'V' THEN 'View'
WHEN 'X' THEN 'Extended stored procedure'
ELSE o.xtype
END AS ObjectType,
ISNULL( p.Name, '[db]') AS Location
FROM syscomments c
INNER JOIN sysobjects o ON c.id=o.id
LEFT JOIN sysobjects p ON o.Parent_obj=p.id
WHERE c.text LIKE '%' + @Text + '%' and
o.xtype = case when @Type IS NULL then o.xtype else @Type end
ORDER BY Location, ObjectName
END
SELECT OBJECT_NAME(id)
FROM syscomments
WHERE [text] LIKE '%Name%'
AND OBJECTPROPERTY(id, 'IsProcedure') = 1
GROUP BY OBJECT_NAME(id)
এটা চেষ্টা কর .....
sp_msforeachdb 'use ?;select name,''?'' from sys.procedures where object_definition(object_id) like ''%text%'''
এটি সমস্ত ডাটাবেসের সমস্ত সঞ্চিত পদ্ধতিতে অনুসন্ধান করবে। এটি দীর্ঘ পদ্ধতির জন্যও কাজ করবে।
আমি এই স্ক্রিপ্ট ব্যবহার। যদি আপনি আপনার XML মন্তব্যগুলি হলুদ ব্যাকগ্রাউন্ডে কালো পাঠ্য হিসাবে প্রদর্শিত হয় তবে আপনি ফলাফলের এক্সএমএল কলামে যে পাঠ্যটি সন্ধান করছেন তা হাইলাইট করার প্রভাব পাবেন get (সরঞ্জাম -> বিকল্প -> পরিবেশ -> হরফ এবং রং [প্রদর্শন আইটেম: এক্সএমএল মন্তব্য]]
---------------------------------------------
-------------- Start FINDTEXT ----------
---------------------------------------------
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NOCOUNT ON
GO
DECLARE @SearchString VARCHAR(MAX)
SET @SearchString = 'the text you''re looking for'
DECLARE @OverrideSearchStringWith VARCHAR(MAX)
--#############################################################################
-- Use Escape chars in Brackets [] like [%] to find percent char.
--#############################################################################
DECLARE @ReturnLen INT
SET @ReturnLen = 50;
with lastrun
as (select DEPS.OBJECT_ID
,MAX(last_execution_time) as LastRun
from sys.dm_exec_procedure_stats DEPS
group by deps.object_id
)
SELECT OL.Type
,OBJECT_NAME(OL.Obj_ID) AS 'Name'
,LTRIM(RTRIM(REPLACE(SUBSTRING(REPLACE(OBJECT_DEFINITION(OL.Obj_ID), NCHAR(0x001F), ''), CHARINDEX(@SearchString, OBJECT_DEFINITION(OL.Obj_ID)) - @ReturnLen, @ReturnLen * 2), @SearchString, ' ***-->>' + @SearchString + '<<--*** '))) AS SourceLine
,CAST(REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(MAX), REPLACE(OBJECT_DEFINITION(OL.Obj_ID), NCHAR(0x001F), '')), '&', '(A M P)'), '<', '(L T)'), '>', '(G T)'), @SearchString, '<!-->' + @SearchString + '<-->') AS XML) AS 'Hilight Search'
,(SELECT [processing-instruction(A)] = REPLACE(OBJECT_DEFINITION(OL.Obj_ID), NCHAR(0x001F), '')
FOR
XML PATH('')
,TYPE
) AS 'code'
,Modded AS Modified
,LastRun as LastRun
FROM (SELECT CASE P.type
WHEN 'P' THEN 'Proc'
WHEN 'V' THEN 'View'
WHEN 'TR' THEN 'Trig'
ELSE 'Func'
END AS 'Type'
,P.OBJECT_ID AS OBJ_id
,P.modify_Date AS modded
,LastRun.LastRun
FROM sys.Objects P WITH (NOLOCK)
LEFT join lastrun on P.object_id = lastrun.object_id
WHERE OBJECT_DEFINITION(p.OBJECT_ID) LIKE '%' + @SearchString + '%'
AND type IN ('P', 'V', 'TR', 'FN', 'IF', 'TF')
-- AND lastrun.LastRun IS NOT null
) OL
OPTION (FAST 10)
---------------------------------------------
---------------- END -----------------
---------------------------------------------
---------------------------------------------