sqlserver 全庫查詢 帶架構

2022-05-09 05:45:09 字數 2724 閱讀 4977

網上現有的全庫查詢,無法識別自定義架構的資料庫結構:

declare

@str

nvarchar(10

)declare

@tablename

varchar(50

)declare

@colname

varchar(50

)declare

@counts

intdeclare

@sql

nvarchar(2000)--

以上定義變數

declare cur1 cursor

forselect a.name tablename,b.name colname from sys.objects a,syscolumns b where a.object_id

=b.id and a.type_desc=

'user_table'--

定義游標

set@str='

海'--設定要查詢的字元

open cur1 --

開啟游標

fetch

next

from cur1 into

@tablename,@colname

while(@@fetch_status

=0) --

迴圈begin

set@sql

=n'select @counts=count(*) from '+

@tablename+'

where charindex(

'''+

@str

+''','

+@colname+'

)>0

'exec sp_executesql @sql,n'

@counts int output

',@counts output --

執行動態sql

if@counts

>0--

判斷某個表某個字段是否存在特定字元

begin

print

@tablename+'

,'+@colname

--列印表名及欄位名

endfetch

next

from cur1 into

@tablename,@colname

endclose cur1 --

關閉游標

deallocate cur1 --

釋放游標

新增架構支援後,雖偶爾會有報錯,可查詢架構:

declare

@str

nvarchar(10

)declare

@schemasname

varchar(50

)declare

@tablename

varchar(50

)declare

@colname

varchar(50

)declare

@counts

intdeclare

@sql

nvarchar(2000)--

以上定義變數

declare cur1 cursor

forselect s.name schemasname,a.name tablename,b.name colname from

sys.objects a,syscolumns b,sys.schemas s

where a.object_id

=b.id and a.schema_id=s.schema_id and a.type_desc=

'user_table'--

定義游標

set@str='

汙染'--設定要查詢的字元

open cur1 --

開啟游標

fetch

next

from cur1 into

@schemasname,@tablename,@colname

while(@@fetch_status

=0) --

迴圈begin

set@sql

=n'select @counts=count(*) from '+

@schemasname+'

.'+@tablename+'

where charindex(

'''+

@str

+''','

+@colname+'

)>0

'exec sp_executesql @sql,n'

@counts int output

',@counts output --

執行動態sql

if@counts

>0--

判斷某個表某個字段是否存在特定字元

begin

print

@schemasname+'

,'+@tablename+'

,'+@colname

--列印表名及欄位名

endfetch

next

from cur1 into

@schemasname,@tablename,@colname

endclose cur1 --

關閉游標

deallocate cur1 --

釋放游標

SQLServer還原全庫備份

查詢源庫匯出的全庫備份對應的資料檔案和日誌檔案的logicalname restore filelistonly from disk opt mssql full.bak 查詢新建的資料庫對應的資料檔案和日誌檔案 select a.name 邏輯檔名 case when charindex log ...

SQLServer跨庫查詢

用openrowset連線遠端sql或插入資料 如果只是臨時訪問,可以直接用openrowset 查詢示例 select from openrowset sqloledb sql伺服器名 使用者名稱 密碼 資料庫名.dbo.表名 在跨庫查詢時需要啟用ad hoc distributed querie...

sqlserver 多庫查詢

1,最近乙個專案使用sqlserver,使用sqlserver客戶端自帶得查詢工具,即選擇前1000行,生成得sql如下 select top 1000 from slt dbo lr base company 其中 slt是資料庫名,dbo是表示資料庫得表管理物件,lr base company是...