当前位置: 首页 > 面试题库 >

如何使用一个命令删除SQL数据库中的所有索引?

孔宇
2023-03-14
问题内容

那么,如何用一个命令删除SQL数据库中的所有索引?我有此命令可以使我获得全部20条左右的drop语句,但是如何从此“结果集”运行所有这些drop语句?

select * from vw_drop_idnex;

给我相同列表的另一个变体是:

SELECT  'DROP INDEX ' + ix.Name + ' ON ' + OBJECT_NAME(ID)  AS QUERYLIST
FROM  sysindexes ix
WHERE   ix.Name IS NOT null and ix.Name like '%pre_%'

我试图做“ exec(从vw_drop_idnex中选择cmd)”,但是它没有用。我正在寻找一种类似于for循环并逐一运行查询的东西。

-----------------------

在Rob Farleys的帮助下,脚本的最终草案为:

declare @ltr nvarchar(1024);
SELECT @ltr = ( select 'alter table '+o.name+' drop constraint '+i.name+';'
  from sys.indexes i join sys.objects o on  i.object_id=o.object_id
  where o.type<>'S' and is_primary_key=1
  FOR xml path('') );
exec sp_executesql @ltr;

declare @qry nvarchar(1024);
select @qry = (select 'drop index '+o.name+'.'+i.name+';'
  from sys.indexes i join sys.objects o on  i.object_id=o.object_id
  where o.type<>'S' and is_primary_key<>1 and index_id>0
for xml path(''));
exec sp_executesql @qry

问题答案:

你很亲密

declare @qry nvarchar(max);
select @qry = 
(SELECT  'DROP INDEX [' + ix.name + '] ON ' + OBJECT_NAME(ID) + '; '
FROM  sysindexes ix
WHERE   ix.Name IS NOT null and ix.Name like '%prefix_%'
for xml path(''));
exec sp_executesql @qry


 类似资料:
  • 问题内容: 我不想键入所有表的名称以删除所有表。一个查询有可能吗? 问题答案: 使用 INFORMATION_SCHEMA.TABLES 视图获取表列表。在select语句中生成Drop脚本,并使用Dynamic SQL将其删除: 系统表 版本 注意: 如果在表之间定义了任何定义,则首先运行以下查询以 禁用数据库中所有存在的内容。 有关更多信息, 请在此处检查 。

  • 问题内容: 我要删除所有具有以下条件的外键。 问题答案: 有一个名为的表,用于存储所有表约束。约束类型也保留在该表中。因此,通过过滤此类型,您可以访问所有外键。 如果创建动态查询(用于-对外键进行更改)以更改表,则可以达到更改所有表的约束的目的。 函数及其参数可确保至少有一个外键约束。

  • 我开始使用一个代码,使用Firebase实时数据库。我将它实现到我的解决方案中。连接和控制非常完美,所以我将其用于生产环境。 一段时间后,我在升级,我需要再次删除所有数据-但请稍候,控制台中最高根级别不再有删除按钮,并且一次只允许在一个选定项目中: 上次更新仅显示此消息,没有后续步骤: 只读 问:如何一次删除所有数据?

  • 问题内容: 我使用塔和sqlalchemy。我不断更新架构文件,并删除并重新创建数据库,以便可以制作新的架构。 每次我通过打开MySql查询浏览器并登录并删除数据库/架构来执行此操作。 如何在Ubuntu Linux中删除完整的linux shell命令中的MySQL db / schema? 问题答案: 尝试以下命令:

  • 问题内容: 我在SQL中使用简单的DELETE语句遇到意外结果时遇到了麻烦,似乎将单词添加到列表中了。一定是愚蠢的东西!但我看不到,尝试了几种不同的方式。所有相同的结果非常令人困惑。 问题答案: 尝试删除单引号。另外,为什么还要将SQL字符串与连接对象()连接起来???? 尝试这样: 还要注意,由于连接被包装在using块中,因此您无需在语句中将其关闭。Dispose方法将自动调用.Close方法

  • 文档建议使用以下函数删除特定索引: 我已经适应了: 但这给了我以下错误: 我找了几个小时都没有结果,有人有什么想法吗?