我什么时候应该使用全文搜索而不是使用 LIKE 搜索,例如
SELECT * FROM myTABLE WHERE myCOLUMN LIKE '*something'
我启动了 SQL Profiler 来捕捉服务器上正在执行的操作,其中我发现了一行说明:
SQL BatchStarting: insert bulk table_name <column_list>
Run Code Online (Sandbox Code Playgroud)
但没有价值观?
如何查看应用程序接受的数据库?
我有一个表,在该表的两列上定义了两个外键。问题是,当我从 SQL Server 插入值时,出现以下错误:
列名或提供的值数量与表定义不匹配
请参阅下图以了解表的定义。你能告诉我为什么没有插入值吗?
我正在阅读 Grant Friitchey 的 SQL Server 执行计划,他提到:
SQL Server 不会永远将执行计划保存在内存中。使用“年龄”公式将计划的估计成本乘以计划的使用次数,它们会慢慢地从系统中老化出来。lazywriter 进程是一个内部进程,用于释放所有类型的缓存(包括计划缓存),它会定期扫描缓存中的对象并每次将该值减一。
如果满足以下条件,将从内存中删除该计划:
- 系统需要更多内存
- 计划的“年龄”已经到了零
- 该计划当前未被现有连接引用。
他还在书的前面提到了以下内容:
一旦优化器到达一个执行计划,估计的计划就会被创建并存储在一个称为计划缓存的内存空间中——尽管如果一个计划已经存在于缓存中,这一切都是不同的。
如果实际计划和估计计划不同,我会假设该计划理论上可以达到零。即使它存储在缓存中,这也会使估计的计划执行计数为零。
我的问题是计划年龄可以达到零的不同情况是什么?我的假设是否正确?
弗里奇,G.(2012 年)。SQL Server 执行计划。美国斯普林菲尔德:Simple Talk 出版。
考虑我有两个表Employee
和Department
下面给出的字段:
员工:
Fname、Minit、Lname、Ssn
Bdate、地址、性别、薪水、Super_ssn、Dno
部门:
Dname
, Dnumber
, Mgr_ssn, Mgr_start_date
Italics and code block
表示表的主键。
在上述情况下,Super_Ssn引用SSN员工,而DNO引用该部的Dnumber。为它们创建 sql 非常简单,首先添加列,然后在形成两个表时更改它们。但是,在插入如下所示的数据时:
insert into employee values('James','E','Borg','888665555','1937-11-10','asda','M',55000,NULL,1);
ERROR: insert or update on table "employee" violates foreign key constraint "dno_ref_dnum_dpt"
DETAIL: Key (dno)=(1) is not present in table "department".
Run Code Online (Sandbox Code Playgroud)
和
insert into sp0090.department values ('Headquarter',1,'888665555','1981-06-19');
ERROR: insert or update on table "department" violates foreign key constraint "department_mgr_ssn_fkey"
DETAIL: Key (mgr_ssn)=(888665555) is not …
Run Code Online (Sandbox Code Playgroud) 我需要使用 RMAN Active Duplication 将 Windows 32 位上的 Oracle 11g R1 复制到 Windows 64 位。
32位设置:
Windows Server 2003 R2 标准版。SP2
数据库 - Oracle 11g 11.1.0.6.0
64位设置:
Windows Server 2008 R2 标准版。
启动数据库 - Oracle 11g 11.1.0.7.0
尽管 11g R1 未在 Windows Server 2008 R2 上进行认证,但它安装良好,没有任何问题。
从 11g 11.1.0.6.0 调用 RMAN 作为 TARGET 到 AUXILIARY 11g 11.1.0.7.0
(这样做是为了向后兼容性问题;匹配相同或更高的 RMAN 版本)。
任一数据库都不是 RCVCAT,但连接是作为 TARGET 或 AUXILIARY 建立的。
出于隐私目的,我替换了数据库的名称以相应地匹配 32 位和 64 位。
在 32 位系统上工作,执行 RMAN 后出现以下错误:
Starting Duplicate Db at …
Run Code Online (Sandbox Code Playgroud) 我们有一个数据库,它对数据中的大多数列使用 GUID(非顺序)。有没有人对 hgih 插入/更新数据库中 GUID 数据库的填充因子有任何最佳建议?
关于维护窗口,我们每晚都有停机时间,通常在周末关闭。
刚刚从 SQL Server 2014 SP1 CU4 升级到 SQL Server 2016。
这是一个集群实例
我不再能够使用 xp_readerrorlog 和 xp_enumerrorlog
Msg 22004, Level 16, State 1, Line 10
Failed to open loopback connection. Please see event log for more information.
Msg 22004, Level 16, State 1, Line 10
Error log location not found.
Run Code Online (Sandbox Code Playgroud)
找到此链接: 无法打开 SQL Server 日志
基本上他们说要修复实例。
还有其他选择吗?
我在表上设置了全文索引;该表处于相当恒定的负载下,每天接收约 50k 插入和约 35k 删除,插入之间的间隔相当短(最多 5 分钟)。
该索引配置为自动更改跟踪,通常能够在插入后几秒钟内处理所有文档。但昨天监测提示,该指数已超过4小时未更新。
收到该警报后,我检查了以下内容:
大约 10 小时后,索引编制又神秘地恢复了,就像它停止了一样。
我认为索引因合并而暂停的想法正确吗?如果不是,我还可以检查什么以获得更好的诊断?
该问题大约每月在不同服务器上发生两次。据我所知,该索引没有按计划重组或重建。我正在寻找一种解决方案,可以让我完全避免索引暂停,或者在维护停机期间安排索引暂停。服务器是 SQL Server 2012 Enterprise。
是否可以在一定时间后让 SQL Server 自动回滚您的事务以避免引起的阻塞/锁定?过去我对此感到内疚,我从许多其他人那里听说这是一个常见的错误。
例如:我总是在执行删除/更新时使用这样的块。
BEGIN TRAN
--SQL Code Here
ROLLBACK TRAN
COMMIT TRAN
Run Code Online (Sandbox Code Playgroud)
这让我看到多少行受到影响或执行上的数据选择,然后我可以注释掉ROLLBACK
它会自动COMMIT
的TRANSACTION
。
但是,有可能没有COMMIT
突出显示/选择导致事务挂起的问题。我正在寻找的是一个设置,例如:
BEGIN TRAN 15 Seconds
--SQL Code Here
ROLLBACK TRAN
COMMIT TRAN
Run Code Online (Sandbox Code Playgroud)
这只会使交易最多保持 15 秒的打开状态。
如果这是不可能的,有没有人有更好的工作流程?
Microsoft SQL Server 是否支持无符号整数数据类型?
我正在尝试更多地了解数据类型选择并帮助朋友完成他的数据库项目,我知道 MySQL 就是这样做的。
我一直在 Pluralsights 上观看Paul Randal撰写的SQL Server:高级损坏恢复技术。在第 4 单元中,他讨论了一个事实,即如果您丢失了日志文件,那么了解数据库是否完全关闭是很重要的。这将决定 SQL Server 是否会运行崩溃恢复。
他继续提到,这个标志可以在数据库引导页面中找到(1:9 是我基于课程材料的假设,并通过microsoft 上的这个链接备份)。但是,我在页面内没有看到任何明显的标志 -
DBCC TRACEON (3604);
DBCC PAGE ('stack',1, 9, 2) WITH TABLERESULTS;
DBCC TRACEOFF (3604);
Run Code Online (Sandbox Code Playgroud)
在网上查找时,我找不到有关引导页面 (1:9) 的信息。我能够找到sys.databases
一列is_cleanly_shutdown
代表:
1 = 数据库完全关闭;启动时无需恢复
0 = 数据库没有完全关闭;启动时需要恢复
但是,我想跟随课程,有人可以告诉我在引导页面中寻找什么吗?另外,如何让数据库显示它已完全关闭或执行此操作的正确步骤?
我正在运行 SQL Server 2012。
备份数据库时创建的 .bak 文件与仅复制 .mdf 文件并按照此处所述进行恢复与创建 BACPAC 文件之间的区别是什么。
在这种情况下,日志本身并不重要,.bak 文件远大于实际数据库。(2GB 数据库上的 20GB 备份)。
对于这种备份策略(自己复制数据库文件),我会每天分离数据库,将 mdf 文件复制到外部媒体,然后重新连接数据库。每个数据库将有 3 个备份(在创建新备份时删除旧备份):
我意识到 MS SQL 提供了它自己的备份机制,这几乎肯定比我概述的要好。然而,即使是差异备份造成的膨胀对于我们所需要的和我们可用的空间量来说似乎太多了。
sql-server ×11
foreign-key ×2
index ×2
backup ×1
datatypes ×1
error-log ×1
insert ×1
maintenance ×1
oracle ×1
oracle-11g ×1
plan-cache ×1
postgresql ×1
profiler ×1
table ×1
upgrade ×1