任何人都可以给我一些截断IBM DB2中的表的语法.
我运行以下命令: truncate table tableName immediate;
错误是DB2
SQLCODE = -104,SQLSTATE = 42601,SQLERRMC = table; truncate; JOIN,DRIVER = 3.50.152消息:在"truncate"之后找到意外的令牌"table".预期的令牌可能包括:"JOIN".. SQLCODE = -104,SQLSTATE = 42601,DRIVER = 3.50.152
语法与IBM参考文档中指定的语法相匹配:http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic =/com.ibm.db29.doc.sqlref/db2z_sql_truncate. HTM
难题是选择独特的对.以下示例中的语法适用于Mssql
declare @t table (a int, b int)
insert into @t (a,b) values (1,2)
insert into @t (a,b) values (2,1)
insert into @t (a,b) values (1,3)
insert into @t (a,b) values (3,1)
insert into @t (a,b) values (5,6)
select * from @t -- it outputs 5 records.
Run Code Online (Sandbox Code Playgroud)
我需要获得唯一的对,而不管顺序a,b,这应该给我三条记录
输出应该是
(1,2),(1,3),(5,6)
Run Code Online (Sandbox Code Playgroud)
我没有想法,会很感激帮助:)
我最近安装了 WSL2 并从 Microsoft Store 安装了 Ubuntu。当我运行 docker 时使用
Sudo service docker start,我收到以下消息
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Run Code Online (Sandbox Code Playgroud)
我按照这个答案遵循了步骤并在下面做了
sudo groupadd docker
sudo usermod -aG docker $(whoami)
Run Code Online (Sandbox Code Playgroud)
但仍然无法启动 docker.. 当检查 Docker 日志时,我可以看到下面
CONNECTING" module=grpc 启动守护进程时出错:初始化网络控制器时出错:获取控制器实例时出错:无法创建 NAT 链 DOCKER:iptables 失败:iptables -t nat -N DOCKER:iptables v1.6.1:无法初始化 iptables 表 nat' : 表不存在(需要insmod吗?)也许iptables或者你的内核需要升级。(退出状态3)`
docker windows-10 windows-subsystem-for-linux windows-terminal
以下是以下查询的简单执行计划。
询问:
SELECT TOP (25) orderid, custid, empid, shipperid, orderdate, filler
FROM dbo.Orders
ORDER BY orderid;
Run Code Online (Sandbox Code Playgroud)
执行计划:
我的问题是如何理解执行次数
以下是所有操作符的执行次数
嵌套循环:
估计执行次数:1
实际执行次数:1
索引扫描:
估计执行次数:1
实际执行次数:1
关键查找:
估计执行次数:25
实际执行次数:25
我的问题是
为什么嵌套循环只显示 1 个执行计数?
索引扫描也只显示一个执行计数,但它在一次执行中得到 25 行。这些行是存储在行集缓存中还是某个缓存中?嵌套循环是否会从缓存中取出一行并为每一行调用键查找 25 次?
以下是来自 Itzik Ben-Gan 的解释
例如,如果告诉它停止的 Top 迭代器出现在计划的后面,索引扫描迭代器如何知道在 25 行后停止?答案是内部 API 调用从根节点开始(在我们的例子中是 SELECT 迭代器)。此根节点调用 Top 迭代器。Top 迭代器调用一个方法 25 次,从 Nested Loops 迭代器请求一行。反过来,嵌套循环迭代器调用一个方法 25 次,从索引扫描迭代器中请求一行。因此,索引扫描迭代器不会超出它扫描的前 25 行。简而言之,虽然遵循数据流顺序来解释计划通常更直观
但是为什么执行计数只显示 1。如果我遗漏了什么,请告诉我。附上执行计划
更新(2017 年 1 月):
我问过一些关于堆栈溢出的类似问题。有关相同..的更多详细信息,请参阅此答案。
https://dba.stackexchange.com/questions/134172/set-statistics-io-for-nested-loops
我已经设置了两个SQL 2014服务器之间的事务日志传送,一切似乎都正确设置但是当恢复发生时,如果.trn非常小,例如7k,它似乎失败了.
不确定这是否与它有关,但它是唯一不同的东西.
以下是还原作业的日志.
日期25/04/2016 22:59:24记录工作经历(LSRestore_IRIS_WebStock)
步骤ID 1服务器HERA作业名称LSRestore_IRIS_WebStock步骤名称日志传送还原日志作业步骤.持续时间00:00:04 Sql严重性0 Sql消息ID 0操作员已通过电子邮件发送
操作员网络已发送操作员已分页重试尝试0消息2016-04-25 22:59:28.71错误:无法将日志备份文件'E:\ ShippingLogs\WebStock\WebStock_20160425033000.trn'应用于辅助数据库'WebStock'.(Microsoft.SqlServer.Management.LogShipping)2016-04 -25 22:59:28.71错误:处理数据库'WebStock'的日志时发生错误.如果可能,从备份还原.如果备份不可用,则可能需要重建日志.恢复期间发生错误,导致数据库"WebStock"(12:0)无法重新启动.诊断恢复错误并修复它们,或从已知良好的备份恢复.如果错误未得到纠正或预期,请联系技术支持.
RESTORE LOG异常终止.数据库'WebStock'处理0页,文件'文件'WebStock'处理1页数据库'WebStock',文件'文件'WebStock_log'.(.Net SqlClient数据提供者)2016-04-25 22:59: 28.71错误:无法记录历史记录/错误消息.(Microsoft.SqlServer.Management.LogShipping)2016-04-25 22:59:28.73错误:ExecuteNonQuery需要一个打开且可用的连接.连接的当前状态已关闭.(System.Data)2016-04-25 22:59:28.73为二级数据库'WebStock'跳过日志备份文件'E:\ ShippingLogs\WebStock\WebStock_20160425033000.trn',因为该文件不能验证.2016-04-25 22:59:28.73错误:无法记录历史记录/错误消息.(Microsoft.SqlServer.Management.LogShipping)2016-04-25 22:59:28.73错误:ExecuteNonQuery需要一个打开且可用的连接.连接的当前状态已关闭.(System.Data)2016-04-25 22:59:28.73错误:恢复数据库访问模式时出错.(Microsoft.SqlServer.Management.LogShipping)2016-04-25 22:59 :28.73错误:ExecuteScalar需要一个开放且可用的连接.连接的当前状态已关闭.(System.Data)2016-04-25 22:59:28.73错误:无法记录历史记录/错误消息.(Microsoft.SqlServer.Management.LogShipping)2016-04-25 22:59: 28.73错误:ExecuteNonQuery需要一个开放且可用的连接.连接的当前状态已关闭.(System.Data)2016-04-25 22:59:28.73错误:无法将日志备份文件'E:\ ShippingLogs\WebStock\WebStock_20160425034500.trn'应用于辅助数据库'WebStock'.( Microsoft.SqlServer.Management.LogShipping)2016-04-25 22:59:28.73错误:ExecuteNonQuery需要一个开放且可用的连接.连接的当前状态已关闭.(System.Data)2016-04-25 22:59:28.73错误:无法记录历史记录/错误消息.(Microsoft.SqlServer.Management.LogShipping)2016-04-25 22:59: 28.73错误:ExecuteNonQuery需要一个开放且可用的连接.连接的当前状态已关闭.(System.Data)2016-04-25 22:59:28.73为二级数据库'WebStock'跳过日志备份文件'E:\ ShippingLogs\WebStock\WebStock_20160425034500.trn',因为该文件不能验证.2016-04-25 22:59:28.73错误:无法记录历史记录/错误消息.(Microsoft.SqlServer.Management.LogShipping)2016-04-25 22:59:28.73错误:ExecuteNonQuery需要一个打开且可用的连接.连接的当前状态已关闭.(System.Data)2016-04-25 22:59:28.73错误:恢复数据库访问模式时出错.(Microsoft.SqlServer.Management.LogShipping)2016-04-25 22:59 :28.73错误:ExecuteScalar需要一个开放且可用的连接.连接的当前状态已关闭.(System.Data)2016-04-25 22:59:28.73错误:无法记录历史记录/错误消息.(Microsoft.SqlServer.Management.LogShipping)2016-04-25 22:59: 28.73错误:ExecuteNonQuery需要一个开放且可用的连接.连接的当前状态已关闭.(System.Data)2016-04-25 22:59:28.73错误:无法将日志备份文件'E:\ ShippingLogs\WebStock\WebStock_20160425040000.trn'应用于辅助数据库'WebStock'.( Microsoft.SqlServer.Management.LogShipp
如果我删除该日志并再次运行还原,它将一直有效,直到找到另一个非常小的日志.
如果日志为空,还原会失败吗?
我有一个存储过程具有以下代码:
BEGIN TRY
--BEGIN TRANSACTION @TranName
DECLARE @ID int
INSERT INTO [dbo].[a] ([Comment],[Type_Id],[CreatedBy])
VALUES ('test',1,2)
SET @ID = SCOPE_IDENTITY()
INSERT INTO [dbo].[b] ([Can_ID],[Com_ID],[Cal_ID],[CreatedBy])
VALUES (1,@ID,null,2)
UPDATE c SET LastUpdated = GETDATE(), LastUpdatedBy = 2 WHERE b.id = @ID
--COMMIT TRANSACTION @TranName
SELECT * from [View] where a.id=@ID
END TRY
BEGIN CATCH
--ROLLBACK TRANSACTION @TranName
END CATCH
Run Code Online (Sandbox Code Playgroud)
单独运行的每个语句(现在都是)运行得很快.但是,当我们从Transaction的代码段中删除注释时,脚本运行时间从1秒增加到超过2分钟.
系统已经运行了很长一段时间了,之前这不是问题,我一直在尝试搜索有关SQL Server如何处理事务的文档,以防万一有可能影响SQL性能的事情而且这是唯一的事情.我想到的是事务日志......但理想情况下,这些单独的语句也可以在单个事务中运行,任何想法?
sql-server stored-procedures sqlperformance sqltransaction sql-server-2012
我正在尝试了解sql server的计划缓存内容.
所以我的问题是:
1.临时计划和准备计划有什么区别?
2.在尝试优化sql server计划缓存时,我应该知道什么?
我们正处于设计阶段,用于在现有Web应用程序中构建审核跟踪。该应用程序在Windows Azure上运行,并使用SQL Azure数据库。
审核日志必须按用户或对象类型过滤(例如,显示用户的所有操作,或显示对对象执行的所有操作)。
我们必须选择如何存储数据,应该使用SQL Azure还是应该使用表存储?我们更喜欢表存储(更便宜)。
但是,表存储的“问题”是如何定义分区键。我们的SQL数据库中有数千名客户(应用程序用户),每个客户都有自己的租户。使用租户ID作为分区键还不够具体,因此我们必须在分区键中添加一些内容。因此存在一个问题:给定过滤要求,我们可以在分区键中添加用户ID以简化用户过滤,或者可以添加对象ID以简化按对象过滤。
因此,我们看到两种可能的解决方案:
-使用SQL Azure代替表存储
-使用表存储并使用具有不同分区键的两个表,这意味着我们复制了所有条目
有什么想法对我们的情况最好的方法是什么?还有其他更好的解决方案吗?
使用SSMS 2014:
当我使用SSMS创建一个新数据库时,新数据库有一些奇怪的默认设置
ALTER DATABASE [del] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [del] SET ANSI_NULLS OFF
GO
ALTER DATABASE [del] SET ANSI_PADDING OFF
GO
ALTER DATABASE [del] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [del] SET ARITHABORT OFF
Run Code Online (Sandbox Code Playgroud)
当我测试脚本和存储过程时,似乎ANSI_NULLS实际上是ON.
我很困惑为什么在创建数据库时像ANSI_NULLS这样重要的设置是关闭的?以及它在我的脚本中如何变为ON?
sql-server ×7
azure ×2
audit-trail ×1
auditing ×1
database ×1
db2 ×1
docker ×1
log-shipping ×1
sharepoint ×1
sql ×1
syntax ×1
truncate ×1
windows-10 ×1