我一直在“保护”我们的数据库服务器。为此,我从 SQL Express 安装创建的文件夹中删除了一些权限。
D:\SQL
D:\SQL\Data
D:\SQL\Backup
etc..
Run Code Online (Sandbox Code Playgroud)
我保留了对 Data 文件夹的权限,但我从其他文件夹中删除了我认为不需要的任何内容。
现在我无法备份数据库。如果我尝试选择备份位置,该对话框不会在 d:\SQL 文件夹中显示任何内容,如果我将路径放入自己,它会告诉我:-
无法访问服务器上的指定路径或文件。验证您是否具有必要的安全权限以及路径和文件是否存在。
...
看起来像文件夹权限问题。以类似方式配置的另一台服务器对名为“ MSSQL$SQLEXPRESS”的帐户具有一堆“允许”权限(我知道我已删除),但是我无法重新添加这些权限,因为没有这样的组,用户或构建-在服务器上的安全原则。
如何为此MSSQL$SQLEXPRESS帐户添加权限?
当从同一 LAN 中不同服务器上的 .NET 4 客户端应用程序连接到 SQL Server 2008 R2 时,可以设置三种不同的网络协议:
什么是最佳实践?选择什么?
附加信息:在服务器和客户端上都启用了 TCP 和命名管道。应用程序正在使用数据库镜像。客户端和服务器通过快速 LAN 进行通信。
我们正在对此进行调查,因为我们有罕见的虚假连接和超时问题。(但无论如何,我想知道最佳实践)。
MSDN 上有一篇关于这个主题的文章,但它非常笼统和模糊。它不建议或推荐任何有用的东西。
似乎有大量关于设置备份任务的过程的信息,但关于数据库备份的全局视图的信息并不多。至少,很难制定为您提供该信息的搜索引擎查询。我知道有三种不同类型的备份:
看来我应该使用所有三个。那么,这是一个有意义的时间表吗?
这样,如果我的数据库在 12 号出现故障,我只需从 1 号恢复完整数据库备份,从 1 号到 12 号进行 12 次差异备份,然后最后恢复最近的事务日志(是事务日志差异?)。
最后,完整的数据库备份是独立的吗?即一旦我在 2 月 1 日进行了完整的数据库备份,我可以删除 1 月的所有文件吗?当然,我会保留前几个月的设置以防万一,但问题是概念性的。
什么是显示失败的sql作业的查询,以便我可以通过一个查询获得所有失败的作业信息
如何使用系统表“backupset”和相关备份表编写脚本或查询,以显示每个生产服务器上每个数据库的上次完整备份和上次日志备份。
如果我想创建 5GB 的数据库
CREATE DATABASE [test]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'test', FILENAME = N'E:\2012\test.mdf' , SIZE = 5529600KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'test_log', FILENAME = N'E:\2012\test_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
Run Code Online (Sandbox Code Playgroud)
在我的 SSD 上需要1 分钟。
但是当我将 SQL Server 用户添加到 Perform volume maintenance tasks

它只需要1-2 秒。
这是为什么?有人可以向我解释这是什么原因吗?
我正在使用 ASP Web API、实体框架和 SQL Server/Azure 数据库构建多租户应用程序(单一数据库、单一架构)。此应用程序将被 1000-5000 名客户使用。所有的表都会有TenantId(Guid / UNIQUEIDENTIFIER) 字段。现在,我使用单字段主键,即 Id (Guid)。但是通过仅使用 Id 字段,我必须检查用户提供的数据是否来自/用于正确的租户。例如,我有一个SalesOrder包含CustomerId字段的表。每次用户发布/更新销售订单时,我都必须检查它CustomerId是否来自同一个租户。情况变得更糟,因为每个租户可能有多个网点。然后我必须检查TenantId和OutletId。这真的是一个维护噩梦,对性能不利。
我想添加TenantId主键沿Id。也可能添加OutletId。所以SalesOrder表中的主键将是:Id、TenantId、 和OutletId。这种方法的缺点是什么?使用复合键会严重影响性能吗?复合键顺序重要吗?我的问题有更好的解决方案吗?
index sql-server physical-design multi-tenant design-pattern
我只是不明白。请参阅此 SQL 查询:
select nchar(65217) -- ?
select nchar(65218) -- ?
select nchar(65219) -- ?
select nchar(65220) -- ?
if nchar(65217) = nchar(65218)
print 'equal'
if nchar(65217) = nchar(65219)
print 'equal'
if nchar(65217) = nchar(65220)
print 'equal'
Run Code Online (Sandbox Code Playgroud)
基于传递关系,这意味着 SQL Server 认为它们都是同一个字符。
但是,在其他环境中,例如 C#,它们并不相同。
我感到困惑的是:
这当然会导致巨大的问题,因为我正在开发一个文本处理应用程序,数据几乎来自任何地方,我需要在处理之前对文本进行规范化。
如果我知道差异的原因,我可能会找到处理它的解决方案。谢谢你。
这可能属于意见范畴,但我很好奇人们是否使用跟踪标志 4199作为 SQL Server 的启动参数。对于使用过它的人,您在什么情况下遇到过查询回归?
这似乎是全面的潜在性能优势,我正在考虑在我们的非生产环境中全局启用它,并让它静置几个月以找出任何问题。
2014 年(或 2016 年)是否默认将 4199 中的修复程序纳入优化器?虽然我理解不引入意外计划更改的情况,但在版本之间隐藏所有这些修复似乎很奇怪。
我们使用的是 2008、2008R2,主要是 2012。
我正在创建一个临时表 ( #myTable) 并使用游标。当并发用户通过我的应用程序访问游标时,这会产生问题吗?它是否允许我创建具有相同名称的单独临时表?
以下是示例代码:
Open cursor;
Fetch Next from cursor into @Variable_Temp_Table_Name;
Create table #myTable(pk int)
While @@Fetch_Status = 0
Begin
Fetch Next from cursor into @Variable_Temp_Table_Name;
End
Run Code Online (Sandbox Code Playgroud) sql-server ×10
backup ×1
cursors ×1
index ×1
jobs ×1
multi-tenant ×1
network ×1
optimization ×1
performance ×1
permissions ×1
unicode ×1