标签: sql-server

以最大压缩级别执行压缩备份的 T-SQL 脚本

我有一个完整备份近 2GB 的数据库。当我执行完整备份(不压缩),然后用 winrar 压缩它时,它变成 140MB,但是当我备份WITH COMPRESSION语法时,结果是 315MB,不幸的是,用 winrar 压缩后,大小没有改变。如何使用 T-SQL 进行最大级别的完全压缩?

sql-server backup compression

2
推荐指数
1
解决办法
1424
查看次数

适用于 1160 个用户的 MS Access + SQL Server - 值得吗?(请帮忙!)

我们位于德里(印度)的学校希望开发一个专业且强大的内部数据库 (SIS),以处理大量学生信息,包括招生、注册、重新注册、学生行为管理和评分。我们注意到,如果没有大量的定制和成本,现成的产品无法完成我们的特定任务。因此,我们决定自己开发这个,因为我们可以完全控制我们希望如何将我们的信息报告给我们的教育委员会(根据他们的规范),并且可以控制我们复杂的评分系统(不断更新以满足动态我们教育委员会的基准需求)。

我们已经开始使用 MS Access 并且仍处于开发的初级阶段。我们想知道是否应该使用 MS Access 作为前端,SQL Server 作为后端 DB,因为我们要完成以下任务:

  1. 能够让80 多名员工用户同时访问、发布、更新和删除 SIS 数据库内的客户记录(在校园内)。

  2. 我们的 SIS DB 能够具有基于 Web 的功能,并在我们的学校网站中集成了一个学生登录门户,因此1080 多名学生可以从他们的家中同时访问特定的基于 Web 的 DB 表格(通过使用学生登录门户)以更新个人记录、检查成绩和其他表现总结。

  3. 我们的 SIS 数据库能够保持高度安全和 24/7 全天候运行,不会出现中断和安全漏洞(我们了解到,仅靠 MS Access 无法做到这一点)。

  4. 能够将我们的 SIS 数据库与另一个内部数据库集成,该数据库将在舒适的家中为学生提供数字学习材料(也可通过学生登录门户访问)。数字学习资料数据库是我们正在创建的另一个数据库,它应该能够存储价值 100 GB 的多媒体资料。

  5. 能够无延迟地将数据从表中快速提取到 GUI。

我们学校在这方面的一个主要因素是成本。他们希望创建低于 1,500 美元的数据库,并希望有许多用户能够同时访问该系统。请帮助我决定我应该如何处理这种情况,无论是性能方面还是成本方面。对于提供的冗长细节,我深表歉意。我真的很困惑,如果有人能在这件事上帮助我,我将不胜感激。

此外,我们希望我们的表单像在主要数据库系统中看到的那样专业。我们注意到 Access 可以创建表单,但只能在一定程度上创建。是否有任何其他系统编程友好的平台可以用来创建高度复杂和专业的数据库表单(例如 Visual Studio)?也将非常感谢有关此主题的帮助。

安基斯

ms-access database-design sql-server

2
推荐指数
1
解决办法
248
查看次数

错误记录各种问题

我正在慢慢收集并尝试分析有关我们所有实例 (2008R2 SP1) 的大量信息。我现在正在查看错误日志,我有几个问题。有很多关于错误日志大小的内容,并发现了不同的建议,sp_cycle_errorlog例如每周循环使用日志,以避免出现非常大的错误日志并能够充分处理它们。所以...

  1. 当错误日志被认为是“大”的?我们的一些日志需要很长时间才能加载,接近一百万行。编辑:一个有 2 034 546 行
  2. 我试图找到一些 tsql 来获取错误日志大小,但找不到它,有可能做到吗?
  3. 我看到建议回收日志并配置不仅仅是默认数量 6。一些作者推荐 50,其他人 10。我想这取决于环境,但是有推荐的数量吗?

sql-server sql-server-2008-r2 error-log

2
推荐指数
1
解决办法
196
查看次数

我真的可以将 SQL Server Express 用作事务复制的分发服务器数据库吗?

我们公司中有一组用户直接针对我们的生产数据库运行报告。他们已经到了足以导致公司其他部门出现绩效问题的地步。

我想在我们的本地数据中心内为他们设置一个报告数据库。我们的生产数据库位于全国不同的数据中心。由于成本原因,我无法在托管生产数据库的数据中心启动另一个 SQL Server 数据库。

在做我的研究时,似乎推荐的方法是Distributor在与Publisher数据库不同的服务器上使用?

我想知道运行 SQL Server Express 的实例是否足以充当Distributor数据库的角色?这远程可行吗?

在此处输入图片说明

sql-server sql-server-2008-r2 sql-server-express reporting transactional-replication

2
推荐指数
1
解决办法
5410
查看次数

比较查询

在 SQL Server 中,如果您要比较来自两个查询的统计 IO,您如何确保缓存不会成为一个因素?

例如(我是在打字的时候编的,不是一个真实的例子):

SELECT Type,
    NAME
FROM TableA a
LEFT OUTER JOIN TableB b ON a.id = b.id
WHERE b.id IS NULL ;

SELECT Type,
    NAME
FROM TableA a 
WHERE NOT EXISTS (
        SELECT 1
        FROM tableb
        WHERE id = a.id
        ) ;
Run Code Online (Sandbox Code Playgroud)

我现在做什么:我以这种方式运行它,获取一个新连接(新 SID)并像这样运行它(以相反的顺序):

SELECT Type,
    NAME
FROM TableA a 
WHERE NOT EXISTS (
        SELECT 1
        FROM tableb
        WHERE id = a.id
        ) ;

SELECT Type,
    NAME
FROM TableA a
LEFT OUTER JOIN TableB b ON …
Run Code Online (Sandbox Code Playgroud)

performance sql-server query-performance

2
推荐指数
1
解决办法
90
查看次数

从 SQL Server 中的索引中跳过一些数据

我有一种情况,SQL Server 给出索引大小超过 900 字节的错误。它的发生是因为索引定义中的列之一是 varchar(2000),并且每当其长度超过 800 时,就会出现错误。

所以,我的问题是,有没有办法在索引定义中说只包含列中的前 800 个字符?

博客上的一些人建议向表中添加一个附加列,该列将具有其他列的前 800 个字符,并在这个新的附加列而不是原始列上添加索引。但我认为这会影响整体性能,因为读取查询仍在查询原始列。

请建议是否有其他方法可以解决此问题。

sql-server nonclustered-index

2
推荐指数
1
解决办法
160
查看次数

如何计算两个日期的确切月份(以天为单位)差异

我正在尝试获取访问日期在五个月之前准确的所有行,但不知何故 DateDiff 函数包括 2013 年 9 月 26 日的记录,这是不正确的,因为五个月的平均天数为 150 到 153 天。我认为它应该算到 2013 年 9 月 3 日。

我正在使用 DATEDIFF(MONTH, VisitDate , GETDATE()) > =5

我应该使用 DATEDIFF( DAY , VisitDate , GETDATE()) >= 153 代替

sql-server-2008 sql-server

2
推荐指数
1
解决办法
3万
查看次数

比较两台服务器上的代理作业

我目前正在构建一个流程,Powershell在该流程中,我们SQL Server Agent只需输入服务器名称即可将作业从一台服务器复制到另一台服务器。该脚本使用 SMO 库来获取对两个作业服务器的访问权限,为“其他”服务器上不存在的作业编写脚本,然后运行这些脚本(在 SqlConnection 和 SqlCommand 下)。问题是如何检查ServerOne与ServerTwo.

我尝试了四种不同的方法:使用来自 ServerTwo(比较服务器)的作业构建一个数组,然后查看该数组是否是contains来自 ServerOne 的作业;我也尝试过类似逻辑的操作符;并且,使用数组,我在Compare-Object从两台服务器加载两个带有作业名称的数组并测量另一个不存在的作业(也产生所有内容)之后使用。最后,我遍历 ServerTwo 上的每个作业并遍历 ServerOne 上的每个作业,看看它们是否彼此相等(这是下面的代码)。这将产生一切,因为每个工作不等于每个工作:

$ServerName = "S1\I"
$ComServer = "S2\I"
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null
$srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" $ServerName
$com = New-Object "Microsoft.SqlServer.Management.Smo.Server" $ComServer


foreach ($a in $com.JobServer.Jobs)
{
    $a = $a.Name.ToString() 
    foreach ($j in $srv.JobServer.Jobs) 
    { 
        $j = $j.Name.ToString()

        if ($a -like $j)
        {
            Write-Host $j
        }
    }   
}
Run Code Online (Sandbox Code Playgroud)

是否有另一种方法可以检查作业是否存在于一台服务器上与另一台服务器上(请注意,我已经知道如何编写作业脚本,执行它等等;确保作业不存在的部分已经存在是这里的问题)?

sql-server powershell

2
推荐指数
1
解决办法
2364
查看次数

AlwaysOn 可用性组延迟副本

使用 AO SQL 2012,是否可以将其中一个成员配置为延迟副本?我知道理想情况下我们希望同步它,但在人为错误的情况下,这将使我们能够检查辅助节点并从辅助节点恢复未提交的数据。在我们之前的一个设置中,我们使用了日志传送,其中还原到一个辅助服务器的时间延迟了一个小时。因此,在出现任何数据问题时,我们能够更快地恢复数据,而不是恢复整个数据库并恢复到时间点。任何输入表示赞赏...提前致谢

sql-server sql-server-2012 availability-groups

2
推荐指数
2
解决办法
1801
查看次数

如何根据列中的值动态生成行

我正在尝试编写一个查询来对一些数据进行非规范化以集成到我们的数据仓库中,特别是围绕生成一些时隙。

在我的源系统中,我有一个表,它有一个开始时间和结束时间,然后有一列指定每 15 分钟间隔有多少约会空档可用。

例子:

    Location | Start Time | End Time | Appointment Slots
    A        | 9:00 am    | 5:00 pm  | 2
    B        | 9:00 am    | 5:00 pm  | 1
Run Code Online (Sandbox Code Playgroud)

我已经能够使用 CTE 生成 15 分钟块的列表。但是,每个 15 分钟的插槽只是说位置 A 有 2 个插槽可用,位置 B 有 1 个插槽可用。我想要的是能够为位置 A 每 15 分钟生成 2 行,每 15 分钟生成 1 行对于位置 B。

data-warehouse sql-server t-sql

2
推荐指数
1
解决办法
2万
查看次数