我正在使用 SQL Server 2014。我想执行EXEC (@remotecmd) AT [server_name];(@remotecmd 是动态 sql 而不是存储过程)到##eapb. 我的代码是
insert into ##eapb
EXEC (@remotecmd) AT [ADSQLDB3S\DEV];
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
链接服务器“server_name”的 OLE DB 访问接口“SQLNCLI11”返回消息“事务管理器已禁用对远程/网络事务的支持。”。
消息 7391,级别 16,状态 2,第 71 行
由于链接服务器“server_name”的 OLE DB 提供程序“SQLNCLI11”无法开始分布式事务,因此无法执行该操作。
如果我删除insert into ##eapb,我没有错误。
链接服务器的RPC Out选项设置为True。
我知道如何编写带有输出参数的存储过程。但我不知道为什么我会使用它而不是仅仅使用一个简单的SELECT语句。一个普通的存储过程仍然可以在网格中返回一个输出(见下面的例子)。
任何人都可以举一个真实的例子,我可以在没有输出参数的情况下使用带有输出参数的 SP 而不是 SP 吗?
-- Using output parameter
SELECT @var = COUNT(*) FROM table1 WHERE gender = @gender...
-- Without output parameter
SELECT COUNT(*) FROM table WHERE gender = @gender...
Run Code Online (Sandbox Code Playgroud) 我目前正在 Oracle 中为我们的生产运行一个很长的脚本,但我们在数据中存在差异。
当我检查脚本正在使用的视图(我正在使用 Toad)时,我看到视图名称旁边有一个 X 标记,然后我看到了一个编译它的选项。
我想知道在视图中编译是否意味着什么?视图是否未更新从而导致数据出现差异?
我们一直遇到一个表上的页面拆分问题,这是一个特别麻烦的问题 - 它是数据库中活动的审计日志,并且已经增长到 1TB 以上。主要索引位于记录类型上,它是 an NVARCHAR(100)- 因为当有 5 种记录类型时您需要它 - 它比 aTINYINT和记录 id更有意义- 它是 anNVARCHAR(200)而不是记录的整数键。
它们还涵盖索引,包括键、旧值、新值等——非常广泛。
这是一个旧系统,不幸的是,这种审计的代码无处不在,而不是集中在一个程序中。它无法改变,我们正在经历漫长的微服务重写的痛苦过程。
因此,我将两个索引的填充因子从 100% 降低到 85%。
并且页面拆分变得更糟。我会说大约 3 倍的页面拆分。
这是一个普遍的结果吗?大多数建议说减少填充因子以提高页面拆分性能。我可以理解为什么它会这样做,因为键中数据的宽度。
建议是进一步降低填充因子,还是将其恢复原状?
出于好奇,只是想知道这是否可能:
我将下载 Microsoft 产品(例如:SQL Server 2017)企业版的 180 天试用版。
将其安装在虚拟机中。
试用期到期后,我将重新安装虚拟机,然后在其中重新安装 SQL Server,再进行 180 天的试用。
不确定开发版的背景及其与企业版的区别。只是希望我可以探索 SQL Server 2017 的所有功能,即使只是仅供家庭使用。
我只想有一个尽可能完整的产品功能的自学环境。
在我的情况下,我有一个文件file_01.mdf并且file_02.ndf在 1 个文件组下,如果file_01.mdf已经满了(没有启用自动增长),file_01.mdf如果尝试在其中添加数据,它会出错吗?
sql-server ×4
t-sql ×2
dynamic-sql ×1
filegroups ×1
fill-factor ×1
license ×1
oracle ×1
page-splits ×1
parameter ×1
view ×1