SQL 中的一个业务流程可以为每个操作生成一个变量1-N 次调用存储过程,其目的是插入与主流程相关的数据。
如何从选择执行多行生成的 sql 或者有没有办法从选择调用存储过程?
这一步之前的过程是涉及到业务逻辑和数据驱动的操作,对相关的FK连接表做了后续的插入。
在需要调用存储过程的那一点上,它已经准备好在表变量中处理数据。调用存储过程的步骤(过程中的逻辑)是一个涉及过程,在存储过程中是有意义的,并且不能复制到现有过程中。
由Select.
SELECT 'EXEC [sim].[ROI_Save] ' + CONVERT(varchar(6), VSL.PathId) + ', '
+ Convert(varchar(6), @ROIResultId) + ', '
+ CONVERT(varchar(6), RT.routeTypeResultId) + ', '
+ CONVERT(varchar(6), RT.ROI_RouteTypeId) + '; '
FROM @routeResultIds RT
JOIN sim.ROI_Result_Vehicle VSL ON RT.ROI_Result_VehicleId = VSL.ROI_Result_VehicleId
Run Code Online (Sandbox Code Playgroud)
结果
是否连接结果并调用Exec?
我有文本块,长度在 500 到 2000 个字符之间。
我需要能够做的是从描述中最多提取 1000 个字符,但仅限于最后一个句号或回车符(Char(13)),这样文本就不会在句子中间被截断。如果同时有句号和 Char(13),我希望它在句号处关闭。
我正在粘贴一些随机生成的文本以尝试显示我的意思。
*打开包装友好欣喜若狂所以可能幽默。充足的结束可能会愚蠢地安静一组说她。我们不是前谷的保证。四需要现场咋说我们找哩。被命令他确信达斯伍德确实没收了。害羞庆祝她合理但遇到的情绪。建议其处理好婚前社交。图纸导致最大的添加主题努力同性恋记住。原则一但您遇到的帮助是不可能的。谁到达结束如何肥沃启用。哥哥她加了还见分毫自然的微笑条画。自己在出动兴趣昏迷不觉兴旺吧。她喧闹的用她不一样的友情表达。性生活迅速兴起。先生的事情做很多其他虚荣自己等待。总是教区品味,就像父亲先生用餐一样。
或者在主要地址中什么都不是。其使直人高度依赖。火腿窗十六问命问。是在唱喜欢必须显示。真男孩法县她无法她的妹妹。像六点一样让你离开。其中性是现在建立的休假法。在快速脸红的内置表中。功过就怕或热情落后。在任何这样的春天希望。忧郁的方式留言*
我希望能够将所有文本返回到“主要地址”。(990 个字符)。
这个数据库有一个持久化的计算列,它是通过调用一个 .NET 函数来计算的。在将兼容性从 MSSQL 2005 更改为 2012 时,出现错误 10334,这看起来更像是警告:它告诉我必须将其中一个表标记为 has_unchecked_assembly_data。
它没有告诉我该怎么做。我应该保持原样吗?我应该以某种方式强制重新计算列吗?如何?
alter assembly unchecked data 的文档列出了造成这种情况的几个原因,我认为 #1 是唯一适用于该数据库的原因。它也没有解释如何取消标记这些列。
我正在测试 sql server 中的合并加入。我有一个INNER JOIN并强制优化器执行以下操作MERGE JOIN:
ID 在个人表中是主键ID 在 Abteilung 表是主键这些表中没有其他索引
select * from [dbo].[Personal] as P inner join [dbo].[Abteilung] as A
on P.[ID]= A.[Personal_ID] OPTION (MERGE JOIN)
Run Code Online (Sandbox Code Playgroud)然后优化器使用这个计划来运行我的查询:
我想强制优化器使用index seek而不是Table Scan
我为实现这个目标做了什么:
ID,上定义分组索引Personal_ID。如果我运行查询,执行计划是这样的变化:这里我有聚集索引扫描,但没有聚集索引搜索
FORCESEEK提示。如果我使用此提示,运行查询会发生错误:由于此查询中定义的提示,查询处理器无法生成查询计划。在不指定任何提示且不使用 SET FORCEPLAN 的情况下重新提交查询。
如果我在查询中添加 where 子句,则查询将更改为:
select * from [dbo].[Personal] as P inner join [dbo].[Abteilung] as A
on P.[ID]= A.[Personal_ID] where A.[Personal_ID]=2
OPTION (MERGE JOIN) …Run Code Online (Sandbox Code Playgroud)我有以下脚本,运行时给我一个逗号分隔的数据库名称列表。
SET NOCOUNT ON
declare @db_list NVARCHAR(MAX)
DECLARE @command varchar(1000)
SELECT @COMMAND = 'SELECT DB_NAME()'
SELECT @db_list = STUFF((
SELECT ', ' + name FROM sys.databases
WHERE name like '__Order'
FOR XML PATH(''),
TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')
-- in case there are no DBs to show, then show no DB '***'
select @db_list = COALESCE(@db_list,'***')
SELECT @db_list = RTRIM(LTRIM(REPLACE(@DB_LIST,',', ',''')))
select @db_list
Run Code Online (Sandbox Code Playgroud)
这给了我以下结果:
UKOrder,' ATOrder,' AUOrder
Run Code Online (Sandbox Code Playgroud)
1)这给出了错误的结果集,我希望它是
'UKOrder','ATOrder','AUOrder'
Run Code Online (Sandbox Code Playgroud)
2) 如何将@db_list 传递给 sp_MSforeachdb?
假设我想跑
选择 db_name()
在@db_list 中的每个数据库中
英国订单
订单 …
sql-server dynamic-sql sql-server-2008-r2 sql-server-2012 sql-server-2014
我已在主服务器 A 和辅助服务器 B 中配置了日志传送。
一切正常,直到我使备用数据库联机。
用户无法登录辅助 serverB 数据库(位于已联机的辅助服务器上)
谁可以帮我这个事?
sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012
在SQL Server 2012中,我想指数有一个表列存储索引。但是出现错误消息:
消息 35338,级别 16,状态 1,第 1 行
不支持聚集列存储索引。
我的代码是:
CREATE TABLE [dbo].[Card](
[CardId] [int] IDENTITY(1,1) NOT NULL,
[CardSerialNumber] [varchar](19) NULL,
[CreateDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
CREATE CLUSTERED COLUMNSTORE INDEX cci_Simple ON [dbo].[Card]
Run Code Online (Sandbox Code Playgroud) 我真的对上面的问题感到困惑。请帮助我更多地了解热心作家。
谢谢你。
我的老板正在请求一个大于 1024 列的视图,其中他在查询视图时只会选择他想要的几列,以便实际返回的列小于 1024。为什么我可以查询大于 1024 的列,但是我无法将这个完全相同的查询保存为视图?
我正在使用 SQL Server 2012 企业版
When the database foo is not yet created and I I run this
IF db_id(N'foo') IS NOT NULL
BEGIN
ALTER DATABASE [foo] SET OFFLINE
GO
DROP DATABASE [foo]
GO
END
Run Code Online (Sandbox Code Playgroud)
I get a message
Cannot drop the database 'foo' becuase it does not exist or you do not have permission.
Why?
I have confirmed that the sql statement select db_id(N'foo') returns NULL.
sql-server-2012 ×10
sql-server ×9
dynamic-sql ×2
t-sql ×2
columnstore ×1
optimization ×1
sql-clr ×1
view ×1