對於連線到的2個資料庫,進行表結構的對比,首先需要連線到另一資料庫
exec sp_addlinkedserver 'tsql_test'
,'sql'
,'sqloledb'
,'127.0.0.1'
--ip根據實際來
exec sp_addlinkedsrvlogin 'tsql_test'
,'false'
,null
,'sa'
,'123456'
--sa為登入使用者名稱,自行替換,123456為登入密碼,自行替換
go
在結束後記得釋放遠端連線
exec sp_dropserver 'tsql_test'
,'droplogins'
查詢資料庫有差異的表
--otherdatabase為另一資料庫名,根據實際自行替換
select ntable = a.name, otable = b.name
from sysobjects a
left
join tsql_test.otherdatabase.dbo.sysobjects b
on a.name = b.name
where isnull(b.name,'')
=''and a.xtype =
'u'union
allselect ntable = b.name, otable = a.name
from tsql_test.otherdatabase.dbo.sysobjects a
left
join sysobjects b
on a.name = b.name
where isnull(b.name,'')
=''and a.xtype =
'u'orderby1
,2
比較兩個資料庫中每個表字段的差異
--otherdatabase為另一資料庫名,根據實際自行替換
select
表名a =
case
when isnull(a.tablename,'')
<>
''then a.tablename else b.tablename end
, 欄位名a = a.fieldname,
欄位名b = b.fieldname,
順序= a.fieldsno,
說明=case
when a.fieldtype <> b.fieldtype then
'型別: '
+ a.fieldtype +
'-->'
+ b.fieldtype
when a.fieldsno <> b.fieldsno then
'順序: '
+ str(a.fieldsno)
+'-->'
+ str(b.fieldsno)
when a.length <> b.length then
'長度: '
+ str(a.length)
+'-->'
+ str(b.length)
when a.lensec <> b.lensec then
'小數字: '
+ str(a.lensec)
+'-->'
+ str(b.lensec)
when a.allownull <> b.allownull then
'允許空值: '
+ str(a.allownull)
+'-->'
+ str(b.allownull)
endfrom
(select
tablename = b.name,
fieldname = a.name,
fieldsno = a.colid,
fieldtype = c.name,
length = a.length,
lensec = a.xscale,
allownull = a.isnullable
from syscolumns a
left
join sysobjects b
on a.id = b.id
left
join systypes c
on a.xusertype = c.xusertype
where b.xtype =
'u') a
full
join
(select
tablename = b.name,
fieldname = a.name,
fieldsno = a.colid,
fieldtype = c.name,
length = a.length,
lensec = a.xscale,
allownull = a.isnullable
from tsql_test.otherdatabase.dbo.syscolumns a
left
join tsql_test.otherdatabase.dbo.sysobjects b
on a.id = b.id
left
join tsql_test.otherdatabase.dbo.systypes c
on a.xusertype = c.xusertype
where b.xtype =
'u') b
on a.tablename = b.tablename
and a.fieldname = b.fieldname
where isnull(a.tablename,'')
=''or isnull(b.tablename,'')
=''or a.fieldtype <> b.fieldtype
or a.fieldsno <> b.fieldsno
or a.length <> b.length
or a.lensec <> b.lensec
or a.allownull <> b.allownull
orderby1
,4
比較2個資料庫的差異
對已經執行的系統進行大規模模組開發之後,對資料庫和程式修改比較大。如果開始開發的時候沒有嚴格要求,或者人員沒有按照要求做,或者人員離職交接不合格,很容易造成文件不完整,必須比較兩個資料庫的差別。下面的sql比較出兩個資料庫中表結構有差的地方。select obj.name as tablename,...
SQLserver2資料庫操作
收縮資料庫和資料檔案 使用dbcc shrinkdatabase 收縮資料庫 收縮webshop資料庫,剩餘可用空間10 dbcc shrinkdatabase webshop,10 使用dbcc shrinkfile收縮資料檔案 將資料庫webshop中名為datafile1的資料檔案收縮到10m...
對整個資料庫進行查詢
最近工作中遇到乙個需求,要對整個資料庫中每個表的每個字段進行條件查詢。最後寫了一段 實現遍歷資料庫的所有表並對每個字段進行條件查詢。下面的 檢查欄位的值是否包含 http 是則記錄 表名欄位名 環境 sql server 2008 use database database為目標資料庫名稱 decl...