这似乎是一个有很多神话和相互冲突的领域。
那么SQL Server中的表变量和本地临时表有什么区别呢?
这个问题在大多数论坛和整个网络中似乎是一个常见问题,这里以多种格式提出,通常听起来像这样:
在 SQL Server 中 -
- 事务日志变得如此之大的一些原因是什么?
- 为什么我的日志文件这么大?
- 有什么方法可以防止这个问题的发生?
- 当我找到根本原因并希望将我的事务日志文件调整到正常大小时,我该怎么办?
sql-server shrink transaction-log auto-growth recovery-model
当我希望一列具有不同的值时,我可以使用约束
create table t1(
id int primary key,
code varchar(10) unique NULL
);
go
Run Code Online (Sandbox Code Playgroud)
或者我可以使用唯一索引
create table t2(
id int primary key,
code varchar(10) NULL
);
go
create unique index I_t2 on t2(code);
Run Code Online (Sandbox Code Playgroud)
具有唯一约束的列似乎是唯一索引的良好候选者。
是否有任何已知的原因使用唯一约束而不是使用唯一索引?
index sql-server constraint best-practices unique-constraint
我发现我的大多数客户根本没有记录他们的数据库,我觉得这很可怕。为了介绍一些更好的实践,我想知道人们正在使用哪些工具/流程。
我不是在谈论逆向工程/记录现有数据库,而是主要讨论开发系统/数据库时的文档最佳实践。
在为我之前问的另一个问题创建测试数据库时,我记得可以声明主键 NONCLUSTERED
什么时候使用NONCLUSTERED主键而不是CLUSTERED主键?
提前致谢
通用表表达式 (CTE) 和临时表有什么区别?我什么时候应该使用一个?
CTE
WITH cte (Column1, Column2, Column3)
AS
(
SELECT Column1, Column2, Column3
FROM SomeTable
)
SELECT * FROM cte
Run Code Online (Sandbox Code Playgroud)
临时表
SELECT Column1, Column2, Column3
INTO #tmpTable
FROM SomeTable
SELECT * FROM #tmpTable
Run Code Online (Sandbox Code Playgroud) 有关如何处理此错误的任何建议:
TITLE: Microsoft SQL Server 2017 Setup
------------------------------
The following error has occurred:
VS Shell installation has failed with exit code 1638.
For help, click: https://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft%20SQL%20Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=14.0.1000.169&EvtType=0x5B39C8B9%25401434%25403
------------------------------
BUTTONS:
OK
------------------------------
Run Code Online (Sandbox Code Playgroud)
这是一台正在运行的新笔记本电脑
我尝试卸载与 SQL Server 或 Visual Studio 相关的任何内容。
日志:[3500:3970][2017-11-03T16:25:20]e000:错误 0x80070666:安装较新版本时无法安装产品。
Detailed results:
Feature: Full-Text and Semantic Extractions for Search
Status: Failed
Reason for failure: An error occurred for a dependency of the feature causing the setup process for the feature to fail. …Run Code Online (Sandbox Code Playgroud) 是否应该授予开发人员查询(SELECT/只读)生产数据库的权限?我之前工作的地方,开发团队有这个db_datareader角色;我现在工作的地方开发团队甚至无法连接到生产实例。
其中一个测试实例是每周一次从生产备份中恢复的生产副本,因此开发人员实际查看数据没有任何问题。
不允许开发人员查询生产(除了根本不希望他们有权读取敏感数据)有什么好的理由?
我有一个数据库,想将.mdf和.ldf文件移动到另一个位置。但是我不想停止MSSQLSERVER服务,也不想导出到另一台服务器。
我怎样才能做到这一点?
我一直在阅读使用或不使用Guid和的原因int。
int更小、更快、更容易记住、保持时间顺序。至于Guid,我发现的唯一优点是它是独一无二的。在哪种情况下 aGuid会更好int,为什么?
从我所看到的,int除了数量限制之外没有任何缺陷,这在许多情况下是无关紧要的。
究竟为什么被Guid创造?我实际上认为它除了用作简单表的主键之外还有其他用途。(任何Guid用于某事的实际应用程序的示例?)
SQL Server 上的 ( Guid = UniqueIdentifier ) 类型
sql-server ×10
primary-key ×2
auto-growth ×1
backup ×1
constraint ×1
cte ×1
index ×1
installation ×1
performance ×1
permissions ×1
shrink ×1
t-sql ×1