Questions tagged «sql-server»

所有版本的Microsoft SQL Server(非MySQL)。还请添加特定于版本的标记,例如sql-server-2016,因为它通常与问题相关。

4
无法以单用户模式连接到SQL Server
我已经开始我SQL Server 2008 sqlcst02\inst01在Single User Mode通过附加;-m到该实例在启动参数结束SQL Server Configuration Manager。我已经停止SQL Server Agent了inst01实例。我的帐户的一员Domain Admin group,我已经用试图登录sqlcmd -S sqlcst02\inst01,并不断收到错误,该服务是Single User Mode只有一个管理员可以登录。我尝试添加;-m"sqlcmd"到启动参数来限制只是连接sqlcmd,但我得到的相同的结果。我已经尝试过以我自己的帐户登录,并以本地管理员帐户登录。我已经以本人和管理员身份启动了命令提示符,但得到的结果相同。我尝试使用ADMIN:sqlcst02\inst01in 连接SSMS。没运气。 我正在尝试重置sa密码,因为以前的管理员没有为我保留此信息。这太疯狂了。我之前在其他机器上都做到了这一点,没有任何问题。

1
SQL Server 2000到2008到2012
我们现在正在从SQL Server 2000迁移到2008。我们正在对代码,脚本进行大量更改,因为自2000年到2008年以来发生了许多更改。在进行这些更改时,我想知道的是-我现在可以做些什么使它与2012年兼容同一时间。尽量避免从2012年到2008年等向后兼容的更改。我想这样做的原因是,当我们决定从2008年到2012年迁移时,尽量减少将来(从现在到3到4年)的工作量。我能做的还是需要知道的?

3
如何配置SQL Server 2012,以便它可以还原并查看用户帐户中的文件?
我有一个SQL Server 2012实例作为服务在我的计算机上运行,​​并且根据服务页面以帐户 “ NT Service \ MSSQLSERVER” 登录。但是,在计算机管理屏幕的“本地用户和组”区域中,我在其他任何地方都看不到该帐户名,因为如下面的链接所述,这不是用户帐户,而是服务名称,在该框中,微软因此很有帮助地将其标记为“帐户”。在这一点上,我可以看到很多人感到困惑。 我要完成的任务是使用SSMS对话框“查找备份文件”还原文件,该对话框使用的对话框与任何标准Windows文件打开对话框完全不同,可能是因为它正在执行“远程”作业并从SQL Server的安全上下文是最终用户混乱的另一个丰富来源,我希望这个问题可能有助于解决。 到目前为止,如果要还原我的一个文件夹中的备份.mdf / .bak文件,则必须将该文件夹设置为“所有人都可读”,否则我将无法使用SQL Server“查找备份”进入该文件夹。文件”窗口。我发现这个想法是,您正在使用GUI与具有与您不同的用户帐户和权限的服务进行对话,即使我在Windows系统管理方面有多年经验,Microsoft的所有人也都不会理会您,这很令人困惑。 我希望我错过了一些SQL Server文档页面,这些页面将告诉您在安装新的SQL Server实例之后如何设置安全性。 像这样的论坛帖子甚至让Microsoft工作人员说“这很复杂”,而在Denali中又“改变了”。现在,它在SQL Server 2012中如何工作,以及如何向SQL数据库引擎的安全性添加读取属于用户的文件的权限SID。

3
使用分布式交换机将V​​MWare guest虚拟机批量插入SQL Server
这很可能不是SQL Server问题,但设置似乎仅影响对SQL Server的批量插入。 我们最近移动了VM硬件,并且所有移动的客户机都将其虚拟交换机从标准更改为分布式。 然后我开始接收 从网络读取输入流时发生致命错误。会话将终止(输入错误:64,输出错误:0) 在大容量插入操作期间在两个SQL服务器上运行。其中一台SQL服务器是具有新配置的VM,另一台是物理服务器。两种BULK INSERT操作均源自具有新配置的VM。批量插入不会每次都失败,这是非常随机的。 当我们将虚拟交换机更改为标准交换机而不是分布式交换机时,问题就消失了。 我正在寻找更多关于为什么它不适用于分布式开关而不是分辨率的解释。我的猜测是,BULK INSERT操作是串行的,使用分布式交换机时,数据包将通过不同的主机进行路由,其中​​某些主机可能比其他主机更忙,并且到达目的地服务器的时间超过某些延迟阈值。(注意:在源服务器或目标服务器上发生错误时,Windows事件日志中都没有任何内容) 更新:原来问题出在网卡上。我们所有的虚拟机都配置有E1000 NIC,该NIC在标准交换机上运行良好。转移到分布式交换机后,我们开始看到大型数据传输的问题,而不仅仅是sql查询。将NIC更改为VMXNET3似乎已解决了该问题。

1
使用联接时,SQL Server的订购结果如何?
SQL Server如何找出查询执行结果集中的记录顺序? 我试图做它的正面或反面,但发现自己在挠挠头。当我更改字段时,我选择的顺序也会更改。当我使用a执行以下SQL时,SELECT *我得到的记录相同,但顺序却大不相同。 SELECT TOP (900) AD.ATTACHMENTID, AD.NAME, AD.ISINLINE, AD.INSERTEDDATETIME, ATMT.ATTACHMENTBLOB, U.UFID FROM ATTACHMENTDETAIL AD WITH (NOLOCK) INNER JOIN MESSAGEATTACHMENT MA ON MA.ATTACHMENTID = AD.ATTACHMENTID INNER JOIN ATTACHMENT ATMT ON ATMT.ATTACHMENTID = AD.ATTACHMENTID INNER JOIN MESSAGE MSG ON MSG.ID = MA.MESSAGEID INNER JOIN MESSAGEDETAIL MD ON MD.MESSAGEID = MA.MESSAGEID …

3
如何检查SQL Server端点的安全设置?
我正在为我们的SQL Server开发人员创建一个TEST环境。 在生产中,我们有3个SQL Server,SQL01其中包含多个镜像到的数据库SQL02。 SQL03在“具有自动故障转移功能的高安全性”或同步配置中充当见证人。 我已经使用VMWare P2V将所有三台计算机虚拟化到单独的硬件上,重新配置了计算机的SID,并从这些新计算机中清除了生产服务器的IP地址。 我起初忘记给生产见证机器加黑洞,因此​​TEST机器上的数据库仍将SQL03机器用作见证。注意到这个问题,我决定在TEST上重新配置数据库,以指向新虚拟化的TEST见证者,称之为TEST03。 要重新配置数据库以使用新的见证服务器,我在主服务器上输入了以下命令TEST01: ALTER DATABASE [TestDB] SET WITNESS = 'TCP://TEST03.domain.inet:5022'; 响应是意外的: The ALTER DATABASE command could not be sent to the remote server instance 'TCP://TEST03.domain.inet:5022'. The database mirroring configuration was not changed. Verify that the server is connected, and try again. 我对这个错误消息非常困惑,因为该配置在生产机器上确实有效,并且在测试机器上没有进行任何修改。 为了使它起作用,我需要LOGIN在测试见证人上创建一个: CREATE …


3
这两个查询在逻辑上是否等效?
这两个查询在逻辑上是否等效? DECLARE @DateTime DATETIME = GETDATE() 查询1 SELECT * FROM MyTable WHERE Datediff(DAY, LogInsertTime, @DateTime) > 7 查询2 SELECT * FROM MyTable WHERE LogInsertTime < @DateTime - 7 如果它们在逻辑上不是等效的,您可以给我第一个查询的逻辑等效,以便WHERE子句可以有效地使用索引(即消除函数包装)吗?


3
合并复制文章计数的硬限制?
有点背景。我们开发了一个使用合并复制的应用程序。目前,我们目前正在发布约212条文章,并且一切都很好,因为它似乎已落在256条以内。(在服务器上使用SQL Standard 2005,在订户级别上使用2005 Express。) 我们正在开发一个新版本,并从头开始构建一个新数据库,该数据库的最低系统要求为SQL 2008 R2 Standard服务器端和客户端的Express 2008 R2。对已发表文章的相同256个计数限制。(是的,我们还将支持2012年,但限制是一样的) 问题出在哪里,我们已经在哪里成功测试了新版本中超过400篇文章的发布,并且所有功能都进行了功能测试(发布创建,快照和订阅者创建以及复制本身)。是否有其他人之前超过了计数限制,这仅仅是一个建议的软限制?在发布创建或订户创建期间,我们都没有看到任何错误。 根据这篇文章:http : //msdn.microsoft.com/zh-cn/library/ms143432%28v=sql.105%29 我正在等待Microsoft的回电,但我想知道是否有人以前在任何SQL版本中都看到过此消息。

1
从备份初始化事务复制
在设置要复制的发布时允许使用“从备份初始化”。我们已经创建复制数据库已有好几年了,并且始终从backkup进行初始化,但是从未设置过该标志(几天前我们才第一次注意到它)。复制当然一直都没有问题。 我发现有很多命中说明需要使用此方法,但没有一个可以解释原因。 有谁知道这实际上是什么?从我的角度来看,这似乎没有必要,但我认为我必须缺少一些东西。

2
Microsoft SQL Server 2008 R2备份错误
我正在尝试对外部磁盘进行简单备份,并收到此错误: 服务器“服务器名”的备份失败 附加信息: System.Data.SqlClient.SqlError:加载在“ C:\ Program Files \ Microsoft SQL ..”上的媒体的格式设置为支持1个媒体系列,但是根据备份设备规范,预计需要2个媒体系列。(Microsoft.SqlServer.Smo)` 备份类型:完整 为什么会出现此错误,为什么该消息指向C:\Program Files..目标文件是否为外部设备?


2
如何从字符串中去除非数字字符?
用户在框中输入搜索词,然后将该值传递给存储过程,并对照数据库中的几个不同字段进行检查。这些字段并不总是具有相同的数据类型。 一个字段(电话号码)由所有数字组成,因此使用.Net CLR函数检查时会去除字符串中的所有非数字字符。 SELECT dbo.RegexReplace('(123)123-4567', '[^0-9]', '') 问题是,此函数有时突然停止工作,并出现以下错误: Msg 6533,第16级,状态49,第2行 AppDomain MyDBName.dbo [runtime] .1575已由升级策略卸载,以确保 您的应用程序的一致性。访问关键资源时发生内存不足。 System.Threading.ThreadAbortException:类型的异常 引发了“ System.Threading.ThreadAbortException”。 System.Threading.ThreadAbortException: 我已经尝试过针对此错误在MSDN上发布的建议,但仍然遇到问题。目前,我们无法选择切换到64位服务器。 我知道重新启动服务器会释放它所拥有的任何内存,但这在生产环境中不是可行的解决方案。 是否只有在使用T-SQL的SQL Server 2005中才能从字符串中去除非数字字符?

3
SQL BULK插入/ BCP导出后未释放使用的内存
我创建了一个非常基本的SQL表,如下所示 CREATE TABLE [dbo].[TickData]( [Date] [varchar](12) NULL, [Time] [varchar](12) NOT NULL, [Symbol] [varchar](12) NOT NULL, [Side] [varchar](2) NOT NULL, [Depth] [varchar](2) NOT NULL, [Quote] [varchar](12) NOT NULL, [Size] [varchar](18) NOT NULL ) ON [PRIMARY] 然后,我执行了3 Gig批量插入 BULK INSERT TickData FROM 'C:\SUMO.csv' GO 然后SQL Server的RAM使用量激增,吞噬了约30Go的RAM: 我更倾向于认为这是一种异常行为,可以采取措施避免这种情况。 编辑: 好的,这似乎是默认行为。很公平。 但是,为什么在大容量插入完成后很长时间没有释放内存? 几个额外的考虑因素: 关于SQL …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.