标签: sql-server

如何使用一个SQL查询从数据库中删除所有表?

我不想键入所有表的名称来删除所有表.是否可以使用一个查询?

sql sql-server

148
推荐指数
8
解决办法
37万
查看次数

删除名称以某个字符串开头的所有表

我想要一个脚本来删除名称以给定字符串开头的所有表.我确信这可以用一些动态的sql和INFORMATION_SCHEMA表来完成.

如果有人有脚本,或者可以快速敲门,请发布.

如果在我弄清楚之前没有人发布答案,我会发布我的解决方案.

sql sql-server dynamic-sql

147
推荐指数
8
解决办法
19万
查看次数

如何检查表上保存的锁

我们如何针对查询批处理检查针对哪些行应用了哪些数据库锁?

任何突出显示表行级锁定的工具?

DB:SQL Server 2005

sql database sql-server performance sql-server-2005

147
推荐指数
7
解决办法
61万
查看次数

147
推荐指数
5
解决办法
11万
查看次数

不使用游标的每个行的SQL调用存储过程

如何为表中的每一行调用存储过程,其中行的列是sp的输入参数而不使用Cursor?

sql sql-server stored-procedures cursor

147
推荐指数
8
解决办法
19万
查看次数

何时/为何在SQL Server中使用级联?

在SQL Server中设置外键时,在什么情况下应该在删除或更新时级联它,背后的原因是什么?

这可能也适用于其他数据库.

我最关注每个场景的具体例子,最好是那些成功使用它们的人.

sql-server rdbms database-design cascade foreign-keys

146
推荐指数
9
解决办法
9万
查看次数

LEFT OUTER JOIN如何返回比左表中存在的更多记录?

我有一个非常基本的LEFT OUTER JOIN来返回左表中的所有结果以及来自更大表的一些附加信息.左表包含4935条记录,但当我将其连接到另一个表时,记录计数明显更大.

据我所知,LEFT OUTER JOIN将返回左表中的所有记录,右表中的匹配记录和任何无法匹配的行的空值,这是绝对的福音,因此我的理解是它应该不可能返回比左表中存在的行更多的行,但它发生的一切都是一样的!

SQL查询如下:

SELECT     SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID
FROM         SUSP.Susp_Visits LEFT OUTER JOIN
                      DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum
Run Code Online (Sandbox Code Playgroud)

也许我在语法上犯了一个错误,或者我对LEFT OUTER JOIN的理解是不完整的,希望有人可以解释这是如何发生的?

后记

感谢你们给出了很好的答案,我对LEFT OUTER JOINS的理解现在要好得多,但是有人可以提出一种方法可以修改这个查询,这样我只能获得与左表中存在的记录一样多的记录吗?

此查询纯粹是为了生成报告,而重复的匹配只是简单地混淆了问题.

/后记

sql t-sql sql-server sql-server-2005

146
推荐指数
9
解决办法
18万
查看次数

145
推荐指数
7
解决办法
75万
查看次数

如何在sql脚本中指定"关闭现有连接"

我正在SQL Server 2008中对我的架构进行主动开发,并经常要重新运行我的drop/create数据库脚本.我跑的时候

USE [master]
GO

IF  EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDatabase')
DROP DATABASE [MyDatabase]
GO
Run Code Online (Sandbox Code Playgroud)

我经常遇到这个错误

Msg 3702, Level 16, State 4, Line 3
Cannot drop database "MyDatabase" because it is currently in use.
Run Code Online (Sandbox Code Playgroud)

如果右键单击对象资源管理器窗格中的数据库并从上下文菜单中选择"删除"任务,则会出现一个"关闭现有连接"的复选框

有没有办法在我的脚本中指定此选项?

sql sql-server

145
推荐指数
4
解决办法
10万
查看次数

DISTINCT只有一列

假设我有以下查询.

SELECT ID, Email, ProductName, ProductModel FROM Products
Run Code Online (Sandbox Code Playgroud)

如何修改它以使其不返回重复的电子邮件?

换句话说,当多行包含相同的电子邮件时,我希望结果只包含其中一行(最好是最后一行).应允许其他列中的重复项.

类似条款DISTINCT,并GROUP BY出现在整个行工作.所以我不确定如何处理这个问题.

sql sql-server

145
推荐指数
4
解决办法
23万
查看次数