我有一个 SQL Server 2008-R2 数据库,我正在将它的数据迁移到另一个 SQL Server 2008-R2 数据库。该数据库包含 400 多个表,但我需要找到所有包含以 BLOB 格式保存的图像和文档的表,并将这些项目放入单独的数据库(也是 SQL 2008-R2)中。
我使用以下脚本来定位所有具有 Binary、Image、Varbinary、Varchar(MAX)、nVarchar(MAX) 的表:
SELECT
OBJECT_NAME(c.id) as TableName,
c.name as ColumnName,
c.colid As ColumnOrder,
st.name as UserType,
bt.name as BaseType
FROM
dbo.syscolumns c
INNER JOIN dbo.systypes st ON st.xusertype = c.xusertype
INNER JOIN dbo.systypes bt ON bt.xusertype = c.xtype
WHERE
OBJECTPROPERTY(c.id,'ISTABLE') = 1
AND((st.name = 'nvarchar' AND c.length = 8000) OR
(st.name = 'varchar' AND c.length = 8000) OR
(st.name in('sql_variant','varbinary','binary','image')))
ORDER BY
OBJECT_NAME(c.id),
c.colid
但这只会将列表减半,除了为这些表中的每一个构建 SELECT 语句之外,还有一种更简单的方法可以在这个数据库中查找 BLOB 文件吗?