我需要根据表2中多列的数据插入和删除表1中的记录。
示例:表 1 和表 2 具有相同的列:地址、城市、州和邮编。
表 1 是具有数百万条记录的主表。表 2(千条记录)是基于以某种方式更改的数据的表 - 尽管它可能不是此表中的数据更改。
匹配记录意味着地址、城市、州和邮政编码在两个表中的值相同。
所以我想做两个操作:
根据 Table1 的大小,我需要一种非常有效的方法来执行此操作。我知道一些 SQL - 但没有达到如果使用 SQL 完成所需的级别。
这是一个 DB2 数据库 - 版本 10.5。
我从 postgresql 来到 oracle。在 postgresql 中,我可以使用命令行工具 psql 在事务中执行删除或更新:
dbpool.production=> begin;
BEGIN
dbpool.production=*> delete from foo where account_id like '%1000%';
DELETE 9
dbpool.production=*> commit;
COMMIT
dbpool.production=>
Run Code Online (Sandbox Code Playgroud)
我喜欢在提交事务之前看到我得到了预期的计数。
在 sqlplus(Oracle 命令行工具)中,事情并非如此。当我输入“开始;”时,它只是开始读取更多的输入,从不明显地做任何事情:
SQL> begin;
2 update opacs_work_orders set customer_id = null;
3 commit;
4
Run Code Online (Sandbox Code Playgroud)
我如何使用 sqlplus 对一个事务执行一个或多个语句?
我们有一个邪恶的查询,它从表中读取每一行,但不应该。为了帮助开发人员找到该查询的来源,当针对该表的任何选择没有 where 子句时,我想使 SQL Server 出错。
一个应用程序正在做一个无处可去的邪恶选择。选择读取大约有 6,500 行的表的每一行。选择在 SSMS 中很快(< 1 秒),但是当由应用程序运行时它很慢(大约 1/2 小时)。我们认为这是因为应用程序正在慢慢地迭代结果集。它是一个用于更新和插入的活动表,因此在进行此读取时可能会阻止其他查询。
开发人员没有理由认为任何应用程序都应该读取该表的每一行。他们怀疑是过去开发人员的疏忽。
到目前为止,邪恶的 query-with-no-where 是我的领跑者,因为它在 Query Store 中的总持续时间最长。
通过使用 SQL Profiler 识别应用程序名称、主机名和数据库用户名,我知道哪个应用程序正在发出恶意查询。该应用程序的开发人员无法找到恶意查询的来源。我想帮忙。
该应用程序使用 C# 并使用 LINQ。邪恶的查询每次都完全相同,具有相同顺序的相同列。可以使用简单的相等来确定发出的查询是否是邪恶的查询。查询以自己的批次发出,没有任何其他查询。
我想让任何针对没有 WHERE 子句(即选择每一行)的表的选择立即失败。我们希望应用程序会记录错误,或者触发 Activity 的最终用户可能会向我们报告 500 错误,这将为我们提供另一个线索来找到发出邪恶查询的代码.
我们针对该表的其他选择具有特定的 where 子句,并且只返回表行的子集。必须允许这些选择继续。
SELECT
[a].[Id],
[a].[AccountingIntegrationActionTypeId],
[a].[CreateDate],
[a].[CreatedBy],
[a].[FranchiseId],
[a].[Message],
[a].[ModelObject],
[a].[ProcessId],
[a].[RequestedBy],
[a].[RequestedFor],
[a].[Resolved],
[a].[UpdateBy],
[a].[UpdateDate]
FROM
[AccountingIntegrationQueue] AS [a]
Run Code Online (Sandbox Code Playgroud) 我有几个数据库偶尔会被删除和重新创建。当架构更改时会发生这种情况。
我有一组需要访问这些数据库的开发人员。为了授予这些开发人员访问这些数据库的权限,我可以:
使用共享登录,并使用 SSMS 授予该登录访问每个数据库的权限。这是不好的安全性,但相当快。我不想这样做,只是它可以节省我很多时间。
使用个人登录,并使用 SSMS 授予每个登录访问每个数据库的权限。这是很好的安全性,但每次我必须重新创建数据库时都会花费我的时间。我必须选择每个用户的登录名,并编辑用户的用户映射。
如何轻松授予一组用户访问我删除并重新创建的数据库的权限?
Microsoft SQL Server 管理工作室 12.0.2569.0
SqlServer 12.0.4100.1