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

重命名列而不破坏脚本和存储过程

竺展
2023-03-14
问题内容

我想将列名修改为表中存在的新名称

但这里的问题我想手动修改或中的column name礼物。Triggers``SP's

有没有更好的方法可以做到这一点。

rename一列正在使用此

sp_RENAME 'Tablename.old_Column', 'new_column' , 'COLUMN';

我同样如何为做到这一点triggers还是SP's?没有打开每个脚本?


问题答案:

好吧,有很多第三方工具都承诺使用这种类型的“安全重命名”工具,其中一些是免费的,而有些则不是:

  • MWillemse在回答中写道,ApexSQL为此提供了一个免费工具
  • RedGate有一个称为SQLPrompt的商业工具,该工具也具有安全的重命名功能,但是,它远非免费的。
  • 正如Dan Guzman在评论中所写的那样,Microsoft有一个称为SQLServer数据工具(简称为SSDT)的可视工作室加载项。

我不得不说我从未针对这些特定任务尝试过任何这些特定工​​具,但是我确实对SSDT和RedGate的某些产品有一定的经验,我认为它们是非常好的工具。我对ApexSQL一无所知。

另一个选择是尝试自己编写sql脚本,但是在开始之前要考虑以下两点:

  • 可以直接从sql server外部访问您的表吗?我的意思是,是否有可能某些软件直接在该表上执行sql语句?如果是这样,则在重命名该列时可能会破坏它,并且在这种情况下没有SQL工具会有所帮助。
  • 您的sql脚本编写技能真的那么好吗?我认为自己对sql Server有相当的经验,但是我认为编写这样的脚本超出了我的技能范围。并非对我来说这是不可能的,但我可能会花太多时间和精力才能免费获得某些东西。

如果您决定自己编写它,那么有一些文章可能会帮助您完成该任务:

首先,是sys.sql_expression_dependencies的Microsoft官方文档。
其次,由13年经验的DBA撰写的一篇名为《寻找SQL
Server对象依赖关系的不同方法》
的文章,最后但并非最不重要的一点,是StackExchange数据库管理员网站上的一个相关问题。

当然,您可以采用Gordon Linoff在他的注释中建议的安全方式,或者使用他的答案中建议的诸如destination-
data之类的同义词,但是随后您将不得不手动修改所有列依赖关系,并且据我所知,这就是您要避免的事情。



 类似资料:
  • 问题内容: 我已经创建了文件夹并在其中初始化了virtualenv实例。 当我运行时,它将按原样显示已安装的软件包。 现在我想重命名为。 但是,当我跑步时 提示未安装pip。如何在不破坏环境的情况下重命名项目文件夹? 问题答案: 您需要调整安装以使用相对路径。为此提供了选项。从文档: 通常,环境与特定路径相关。这意味着您无法移动环境或将其复制到另一台计算机。您可以使用以下命令修复环境以使其可重定位

  • 问题内容: 我正在尝试找到一种方法来实现自定义和自定义而不破坏DRY。这是我到目前为止所拥有的: 在我做这样的事情之前,它可以正常工作: 这会立即破坏所有内容,因为的方法与的方法不同。我尝试过创建一个自定义QuerySet类,并在中实现它,但最终我复制了所有方法定义。 我也发现此代码片段有效,但是我需要将额外的参数传递给,因此它无法使用,因为它严重依赖于重新定义。 有没有一种方法可以在不重新定义子

  • 我注意到一个问题,当从shell脚本循环运行多个adb命令时,大多数命令都不会执行。 这是一个示例脚本。 脚本名称:: 注释掉adb命令的输出 我连接了5台设备。在不使用theadab命令的情况下从bash文件运行时,这是输出。它遍历5个循环中的每一个。 包含ADB命令的循环输出 当取消注释adb shell命令时,它只会正确地迭代第一个循环的行。这是未注释adb命令时的输出: 有人能解释一下这种

  • 将包含unicode字符的字符串转储为json会产生奇怪的unicode转义序列: 我想得到这个输出: 如何将unicode字符转储为字符而不是转义序列?

  • 我使用下面的代码生成一个。apk文件,它工作得很好。但是,为了能够调试,我需要在“applicationvariants.all”周围注释代码,另一个明智的Android Studio说没有找到该文件。 我如何才能使它为generate.apk文件工作,并在Android Studio上调试? 更新 我发现发生了什么,实际上当我在文件名中使用日期和时间时,生成的文件中的时间与Android Stu

  • 以下是否正确? 如果必须以多种方式(io操作或注释)处理每个条目,则中断器模式具有更好的并行性能和可扩展性,因为可以使用多个消费者进行并行化而无需争用。 相反,如果必须仅以单一方式处理每个条目,则工作窃取(即在本地存储条目并从其他线程窃取条目)具有更好的并行性和可扩展性,因为将条目不相交地分布到中断器模式中的多个线程上会导致争用。 (当涉及多个生产者(即CAS运营)时,破坏者模式是否仍比其他无锁多