1

我有一个 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 文件吗?

4

0 回答 0