【发布时间】:2010-11-03 13:24:20
【问题描述】:
是否可以执行从 sql ce 数据库中删除所有表的命令?
感谢帮助
【问题讨论】:
标签: sql sql-server-2008 sql-server-ce
是否可以执行从 sql ce 数据库中删除所有表的命令?
感谢帮助
【问题讨论】:
标签: sql sql-server-2008 sql-server-ce
您可以使用信息SCHEMA来生成脚本:
select 'drop table ' || table_name || ';'
from information_schema.tables;
然后运行该脚本。您可能需要多次运行该脚本,因为 SQLCE 中没有 CASCADE 选项 (AFAIK)。
【讨论】:
System.IO.File.Delete 然后运行所需的 CREATE TABLE 脚本
【讨论】:
您也可以删除数据库,然后重新创建它,但它会删除您的所有配置,因此可能不是最佳选择。
【讨论】:
这就是我的做法:
CreateTables.sqlce
在 PowerShell 控制台中粘贴以下内容:
function GenerateDropScript($DbSchemaFile)
{
function Reverse($inputArr)
{
$arr = @($inputArr)
[array]::Reverse($arr)
return $arr
}
$TableNames = Get-Content $DbSchemaFile |
? { $_.StartsWith('CREATE TABLE') } |
% { $_.Substring(14).Replace('] (', '') }
$ReverseNames = Reverse($TableNames)
"Generating DROP script for all tables in: `n`t$DbSchemaFile`n"
$ReverseNames | % { "DROP TABLE [$_]; GO;" }
}
运行GenerateDropScript CreateTables.sqlce
这将读取 CREATE 脚本并按照创建的相反顺序为所有表生成 DROP 脚本,因此您不会遇到任何依赖错误。
【讨论】: