আমি কি এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে এমন কোনও কলাম খুঁজে পেতে পারি যার একটি কলামের নির্দিষ্ট নাম রয়েছে যাতে একটি নির্দিষ্ট স্ট্রিং থাকে?


11

আমি এসকিউএল সার্ভার পরিচালনা স্টুডিও 2008 ব্যবহার করছি।

হাজার হাজার কলাম সহ আমার কাছে বিশাল লিগ্যাসি ডাটাবেস রয়েছে। যদি আমি এমন সমস্ত কলাম অনুসন্ধান করতে পারি যার নামগুলিতে একটি নির্দিষ্ট স্ট্রিং থাকে।

কেউ কি জানেন, এটা কিভাবে করে?

ধন্যবাদ!


1
আমি নিজের ব্যাচের ফাইল স্ক্রিপ্ট দিয়ে এই ধরণের জিনিসটি করি, কাজটি করার জন্য স্কিম্যাক্রোলার নামে একটি জাভা প্রকল্প ব্যবহার করে।
jangofan

উত্তর:


16

এমএমএইচএইচ আপনি চেষ্টা করতে পারেন:

use <your_database>
select o.name,c.name 
from sys.columns c inner join sys.objects  o on c.object_id=o.object_id 
and o.type = 'U'
and CHARINDEX('<your_sub_string>', c.name)>=1

আহ, সুতরাং এর জন্য খুব ভাল কোনও গুই স্ক্রিন নেই।
ইসহাকবি

ঠিক আছে, আপনি ঠিক কি চান :)?
স্টেফ

সিস্টেমে কলামগুলি আমার কাছে বিদ্যমান বলে মনে হচ্ছে না, আমি এটি সন্ধান করছি
আইজাকবি

আপনি যদি এগুলিকে "দেখতে" না পান তবে এটির কারণ আপনার সঠিক অনুমতি নেই। আপনি কি অনুদান দিতে পারেন?
স্টেফ

আমি ২০০ stud এর স্টুডিও থেকে দুর্ঘটনাক্রমে একটি পুরাতন স্কল সার্ভার 2000 ডাটাবেস অনুসন্ধান করছিলাম। আপনার স্ক্রিপ্টটি আসলে কাজ করে, অনেক অনেক ধন্যবাদ।
ইসহাকবি

2

আপনি রেড-গেটের এসকিউএল অনুসন্ধানের মতো কয়েকটি তৃতীয় পক্ষের সরঞ্জামগুলি ব্যবহার করতে পারেন যা নিখরচায়।


আমার কাছে লাল গেট থেকে কিছু ইনস্টল করা আছে, সম্ভবত আমি চেক করব এবং দেখি আমার এসকিএল অনুসন্ধান আছে কিনা। ধন্যবাদ!
ইসহাকবি

2

আপনি INFORMATION_SCHEMA দর্শন ব্যবহার করতে পারেন।

USE <database>

SELECT COLUMN_NAME
     , TABLE_NAME     
 FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%<string you are looking for>%'

একটি ক্যাচ হ'ল সঠিক ডাটাবেসটি ব্যবহার করা নিশ্চিত করা।


0
USE <database>;

Declare @Col varchar(10);
Declare @Val varchar(10);
Declare @tablename varchar(20);
Declare @sql nvarchar(200);
Declare @sql1 nvarchar(200);

SET @Col = '...';   --INSERT COLUMN NAME
SET @Val = ...; -- INSERT COLUMN VALUE

IF OBJECT_ID('tempdb.dbo.##TempTable1', 'U') IS NOT NULL
DROP TABLE ##TempTable1;

SELECT NULL AS MYKEY, name
into ##TempTable1
FROM sysobjects
WHERE id IN ( SELECT id FROM syscolumns WHERE name = @Col )
ORDER BY name asc

set rowcount 1

update ##TempTable1 set mykey = 1

while @@rowcount > 0
begin
    set rowcount 0

    set @tablename =  (select name from ##TempTable1 where mykey = 1)
    set @sql = 'If Exists (SELECT * FROM '+@tablename+' WHERE '+@Col+'='+@Val+') SELECT * FROM '+@tablename+' WHERE '+@Col+'='+@Val+';'
    set @sql1 = 'If Exists (SELECT * FROM '+@tablename+' WHERE '+@Col+'='+@Val+') select name from ##TempTable1 where mykey = 1'
    EXEC sp_executesql @sql1
    EXEC sp_executesql @sql

    delete ##TempTable1 where mykey = 1
        set rowcount 1
    update ##TempTable1 set mykey = 1
end
set rowcount 0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.