标签: sql-server

用于备份 SQL Server 数据库的 Powershell 命令

是否有 PowerShell 命令可以执行服务器上所有数据库的备份?

或者,我可以从 PowerShell 调用存储过程(将执行备份)?

powershell sql-server

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

如何判断何时需要对我的 SQLServer 数据库进行碎片整理?

测量 SQLServer 数据库碎片/性能下降并确定何时对 SQLServer 数据库表进行碎片整理的最佳实践是什么?

我最感兴趣的是了解有用的指标是什么以及应该触发碎片整理的性能下降程度。

optimization defrag sql-server

9
推荐指数
1
解决办法
1186
查看次数

SharePoint 数据库的最佳实践恢复模型是什么

Paul Randal问了一些关于 SharePoint SQL 数据库最佳实践的非常好的问题。今天,在帮助客户维护 SharePoint 安装时,他问了我一个关于 SharePoint 数据库的最佳 SQL 恢复模型的问题。

使用简单恢复模型是我的习惯(我不是数据库管理员 :))))。如果 SharePoint 数据库定期备份,并且您还有项目级别的 3rd 方工具备份,则您确实不需要保存整个日志。

我在这里错过了什么吗?这是正确的方法吗?您是否曾经使用过 SharePoint DB 日志来恢复您的数据?

sharepoint sql-server

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

从存储过程调用 sp_start_job

我们的开发人员需要能够从他们的 .Net 代码启动 SQL Server 代理作业。我知道我可以调用msdb..sp_start_job来做到这一点,但我不想让一般用户帐户直接访问运行作业。

我想要做的是使用 WITH EXECUTE AS 子句在应用程序的数据库中创建一个存储过程来模拟代理帐户。我们的程序是:

CREATE PROCEDURE dbo.StartAgentJob 
    WITH EXECUTE AS 'agentProxy'
AS
BEGIN
    EXEC msdb.dbo.sp_start_job N'RunThisJob';
END
Run Code Online (Sandbox Code Playgroud)

但是,当我们运行它时,我们会收到以下消息:

The EXECUTE permission was denied on the object 'sp_start_job', database 'msdb', schema 'dbo'.
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?这甚至是在 SQL2005 中执行此操作的最佳方法吗?

sql sql-server sql-server-2005

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

我可以在内存中放入整个数据库吗?

我的数据库大小约为 1gb(根据我的数据库的 mdf 文件)。我的数据库服务器有 4GB 的内存。查看活动时计算机上的内存消耗,它的使用率约为 85%(包括操作系统等)

这是否意味着所有数据库读取活动都单独在内存中工作(即整个数据库都在内存中)?还是仍然存在必须转到磁盘的情况?

sql-server sql-server-2005

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

这个 SQL Server 许可证看起来合法吗?

我从软件供应商那里获得的信息让我感到毛骨悚然,我妻子最近从该软件供应商那里购买了她的新小型企业的特定领域办公管理软件。我的印象是,这是一款相对较小的软件,但它是由一家在她的领域中享有盛誉的大公司开发和销售的。该软件使用 MS SQL Server 作为其数据库,我们的购买协议包括 1 个服务器许可证和 5 个 SQL Server 2008 标准版 CAL。

让我感到奇怪的第一件事是当我发现他们的安装程序应用程序冒昧地将我服务器上的 SA 密码更改为不太安全的密码时。当我询问此事时,我被告知他们与 Microsoft 的特定经销商安排要求他们更改 SA 密码,以便他们的特别许可实例只能用于他们的应用程序。实际上这不是问题,因为我仍然可以通过我的 Windows 登录访问 dbo,但解释听起来非常可疑。

然后今天我再次询问我们什么时候可以收到我们的官方 SQL Server 产品密钥,因为迄今为止我们一直在从我的 MSDN 媒体安装的实例上运行,使用我的 MSDN 产品密钥之一临时激活(业务是尚未打开,我一直假设此时我有一个有效的产品密钥)。有人告诉我,他们的代表需要远程访问我们的服务器,以便他可以使用具有“嵌入式密钥”的媒体重新安装 SQL Server。MSSQL 是否甚至在 pre-pidded 媒体上提供,如果是这样,是否允许任何人转售 pre-pidded 媒体?因为他坚持远程访问和安装自己,我的假设是我们最终不会得到这个带有我们自己的产品密钥的预制媒体的副本。

我是偏执狂还是这听起来很可疑?我是一名 .NET 开发人员,对 MS 许可的经验几乎为零,但我知道这可能很复杂,所以我认为这一切都可能是完全正常的。在这一点上,尽管我倾向于坚持他们要么向我们发送有效的产品密钥和服务器/CAL 证书,要么就我们购买的 MSSQL 部分向我们退款。

2011 年 3 月 21 日更新:供应商现在声称参与了下面@Sergey 提到的 ISV 版税计划。不过,在我看来,他们并没有遵守该计划的要求;特别是 SQL Server EULA 没有包含在我们的合同中,他们提供 SQL 作为他们解决方案的一个可选的额外成本组件,而不是一个组成部分。我联系了 MSFT Licensing,并被告知他们需要供应商的 ISV 协议编号,以便进一步调查。供应商的 IT 总监同意向我发送他们的 ISV 协议副本,但我还没有看到它(或对此问题的任何回复)。

最后,大约两周前,我向 BSA 提交了一份报告。我应该在接下来的几周内了解他们是否会展开调查,但与我交谈的代表听起来并不乐观——他说通常优先考虑最终用户员工报告他们的情况雇主。

无论如何,MSFT 许可代表告诉我,只要我妻子的企业有来自 ISV 的发票,显示购买中包含所需数量的 SQL …

licensing sql-server

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

为什么我无法在端口 445 上连接?

我需要在 Windows Server 2008 R2 上运行的 SQL Server 上收集基线性能数据。当我在运行 Windows 7 的计算机上打开 perfmon 并尝试从远程服务器添加计数器时,我收到一条错误消息,指出“无法连接到计算机”。

我可以 ping 服务器,并且可以使用远程桌面进行连接。

除了 perfmon 问题之外,我无法浏览共享(例如 \uncpath\c$)、连接到远程注册表或通过 telnet 连接到端口 445。

我与服务器在同一个子网上,并且服务器和我的计算机上的 Windows 防火墙都已关闭。

networking perfmon server-message-block windows-server-2008-r2 sql-server

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

如何使用sqlcmd删除MSSQL数据库

我有多个由 POCO 网站建设方法创建的数据库,我想删除它们。但是我得到错误。

命令

sqlcmd -S .\SQLEXPRESS -q "drop database aspnet-ORData-20120910180110"

错误

Msg 102, Level 15, State 1, Server MY-PC\SQLEXPRESS, Line 1
Incorrect syntax near '-'.
Run Code Online (Sandbox Code Playgroud)

sql-server

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

如何保护 SQL Server 免受黑客攻击

我遇到了问题,不知道如何处理。我在 Windows 2008 R2 服务器上有一个 SQL Server。此 SQL Server 2005 正用于从位于 Internet 其他位置的另一个 SQL Server 接收数据库订阅。我通过防火墙打开了 sql server 端口,但是在范围内,我输入了其他 SQL Server 的 IP。这样做我希望通过该端口的连接请求不会到达 SQL Server,除非请求来自其他 SQL Server(其 IP 列在防火墙规则的范围内)。但是,当我看到日志时,有数百个“登录失败的用户 sa”条目(它们每过一秒都会出现)。似乎某些黑客正在尝试蛮力猜测用户 sa 密码。但问题是,为什么 Windows 允许这些请求到达 SQL Server,即使它们不是来自防火墙范围中列出的 IP 地址?保护此 SQL Server 的正确方法是什么。除了其他 SQL Server 的 IP,没有其他 IP 需要连接到此 sql server。

编辑 - 更多信息:

我在不同机器的 sql server 端口上运行 telnet。Telnet 会失败,除非它是从防火墙范围中特别提到的机器上运行的。因此,防火墙似乎很好地阻止了 sql server 端口。但是,为什么我会在 SQL Server 日志中看到来自不同 IP 地址的用户“sa”的登录请求失败?黑客是否有可能通过端口 80 进入机器,然后以某种方式尝试连接到 sql server?端口 80 和 443 对所有人开放。除了 sql server 端口(并且仅对一个特定 IP 开放)之外,所有其他端口都已关闭。在 Web …

security sql-server

9
推荐指数
1
解决办法
4638
查看次数

为什么 NT AUTHORITY\SYSTEM 可以创建 SQL Server 数据库备份?

我有一个计划任务(在 Windows 任务计划程序中),它使用 SMO(Windows 身份验证)连接到 SQL Server 并创建数据库备份。到目前为止,此任务在管理员帐户下运行,我想将其更改为使用 SYSTEM 帐户。

我更改了计划任务,令我惊讶的是,它开箱即用。

我想了解为什么会这样。系统为Windows Server 2012 R2,数据库为SQL Server 2012 (SP1) Express Edition。这是一个标准安装,添加了一个 SQL Auth 用户。

在 SSMS 中,这些是登录名及其关联的服务器角色:

  • MS_PolicyEventProcessingLogin## (禁用)

  • MS_PolicyTsqlExecutionLogin## (禁用)

  • MyServer\Administrator(公共、系统管理员)
  • MySqlAuthUser(公共)
  • 内置\用户(公共)
  • NT AUTHORITY\SYSTEM(公共)
  • NT SERVICE\MSSQLSERVER(公共、系统管理员)
  • NT SERVICE\SQLWriter(公共、系统管理员)
  • NT SERVICE\Winmgmt(公共、系统管理员)
  • sa(公共,系统管理员)

数据库本身具有以下用户及其角色:

  • MySqlAuthUser(登录MySqlAuthUser)(db_owner)
  • dbo (登录 sa) (db_owner)
  • 客人(残疾人)
  • INFORMATION_SCHEMA (禁用)
  • 系统(已禁用)

查看用户 NT AUTHORITY\SYSTEM 的“有效权限”会产生以下输出:

  • 更改任何可用性组
  • 连接SQL
  • 创建可用性组
  • 查看任何数据库
  • 查看服务器状态

为什么 NT AUTHORITY\SYSTEM 有备份数据库的权限?我很高兴它确实如此,但我真的很想了解为什么......

backup permissions sql-server database-backup

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