C# 数据库删除表

C# 数据库删除表,c#,sql,sql-server,C#,Sql,Sql Server,如果我有一个select t.name作为sys.tables t中的tableName。。。我怎么能放下那些桌子?我的意思是我有他们,但我想做一些像 drop table where tableName in select t.name as tableName from sys.tables t 一个选项是使用C来创建和运行一些SP?下面的任何idea?都是一个示例脚本。小心使用 DECLARE @SQL nvarchar(MAX) = ''; SELECT @SQL += N'DROP

如果我有一个select t.name作为sys.tables t中的tableName。。。我怎么能放下那些桌子?我的意思是我有他们,但我想做一些像

drop table where tableName in select t.name as tableName from sys.tables t

一个选项是使用C来创建和运行一些SP?下面的任何idea?

都是一个示例脚本。小心使用

DECLARE @SQL nvarchar(MAX) = '';
SELECT @SQL += N'DROP TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + N'.' + QUOTENAME(name) + N';
'
FROM sys.tables
<include your where clause here>

EXEC(@SQL);

下面是一个示例脚本。小心使用

DECLARE @SQL nvarchar(MAX) = '';
SELECT @SQL += N'DROP TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + N'.' + QUOTENAME(name) + N';
'
FROM sys.tables
<include your where clause here>

EXEC(@SQL);

在C中,您可以构建这样的代码。 首先执行SELECT以使用表名填充datatable,然后使用StringBuilder类构建包含所有所需拖放的批处理命令

强烈建议在运行此代码之前进行备份


在C中,您可以构建这样的代码。 首先执行SELECT以使用表名填充datatable,然后使用StringBuilder类构建包含所有所需拖放的批处理命令

强烈建议在运行此代码之前进行备份


这是一次性的还是流程的一部分?在您的案例中,您需要使用动态sql或在sql server c之外创建sql语句这是一次性的还是流程的一部分?在您的案例中,您需要使用动态sql或在sql server c之外创建sql语句必须对其进行一些调整我的需要,但这正是我所想的。非常感谢。我不得不根据我的需要稍微调整一下,但这正是我所想的。非常感谢。
DECLARE @SQL NVARCHAR(MAX)

SELECT @SQL = STUFF((
    SELECT '
    IF OBJECT_ID(''' + SCHEMA_NAME(schema_id) + '.' + QUOTENAME(name) + ''', ''U'') IS NOT NULL
        DROP TABLE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + ';
    '
    FROM sys.objects
    WHERE [type] = 'U'
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')

PRINT @SQL
EXEC sys.sp_executesql @SQL