当我右键单击我的视图并单击“Script View As”时,我收到以下错误:
属性TextHeader不适用于View'[dbo]。[TableName]'。这个 此对象可能不存在属性,或者可能无法检索到该属性 访问权限不足。文本已加密。 (Microsoft.SqlServer.Smo)
我能够使用bcp
来获取表的转储,并且还创建了一个给定here的格式文件。该表有大约60列,我不想手动编写CREATE TABLE
查询。有没有办法自动执行此操作?
我希望
BULK INSERT DB.dbo.TableName
FROM 'E:\Databases\TableName'
WITH (FORMATFILE = 'E:\Databases\TableName.Fmt');
GO
可以做到这一点,但看起来表本身应该存在于数据库中才能执行上述查询。有什么建议吗?
答案 0 :(得分:2)
您可以从INFORMATION_SCHEMA.Columns构造create table语句。类似的东西:
select (column_name + ' ' + data_type +
(case when character_maximum_length is not null
then '('+character_maximum_length+')'
else ''
end) + ','
) as ColumnDef
from Information_Schema.columns
order by ordinal_position
这可能已经足够了。例如,如果你必须处理数字,或者想要“无效”,那么你可以使它更复杂。
将结果复制到一个新窗口,添加create table语句,删除最后一个逗号并添加最终结束语。
您可以在更复杂的SQL语句中执行所有最后一步,但手动执行一次性操作更容易。