我正在运行 SQL Server 2008 Standard 的副本,并尝试设置新用户登录以通过 Web 应用程序访问数据库。
...登录名/密码组合在应用程序上反复失败,即使我尝试通过 SQL Server Management Studio 登录,我也会收到:
Login failed for user 'username'. (Microsoft SQL Server, Error: 18456)
Run Code Online (Sandbox Code Playgroud)
这可能是什么原因?
我想将 SQLite 服务器与 SQL Server 2008 服务器“链接”。例如使用sp_addlinkedserver命令。我该怎么做呢?
我已经进行了广泛的搜索,但没有找到解决此问题的方法。我发现的最接近的尝试是在这里:
http://www.sqlservercentral.com/Forums/Topic866972-149-1.aspx
--#################################################################################################
--Linked server Syntax for SQLite
--using OLE provider C:\Program Files\Cherry City Software\SQLiteProvider\SQLitePV.dll
--from http://cherrycitysoftware.com/ccs/Download/Download.aspx
--#################################################################################################
DECLARE @server sysname,
@srvproduct nvarchar(256),
@provider nvarchar(256),
@datasrc nvarchar(100),
@location nvarchar(100),
@provstr nvarchar(100),
@catalog sysname,
@sql varchar(1000)
--add an SQLite Database as a linked server
SET @server = N'mySQLite'
SET @srvproduct = N'SQLite Provider'
SET @provider = N'OleSQLite.SQLiteSource.1'
SET @datasrc = N'C:\Data\LowellSSC.db3'
set @provstr = ''
EXEC sp_addlinkedserver @server,@srvproduct,@provider,@datasrc,NULL,@provstr
exec sp_addlinkedsrvlogin @rmtsrvname='mySQLite',
@useself …Run Code Online (Sandbox Code Playgroud) windows-server-2008 database sqlite sql-server sql-server-2008
我有一个约 45GB 的数据库,它增长迅速(每周约 1GB)。
所以它做了很多插入;Web 应用程序的用户不多,因此现在读取量很低。
但我注意到 RAM sql server 用户从服务器第一次启动时的 ~1GB 到一周后使用 ~7GB 的 RAM。
是否存在某种内存泄漏?MSDN 上有一篇文章建议 SQL 服务器增加它用于缓存的内存,并且会一直增加。但是,服务器只有 7.5GB 或 ram,所以我担心它会耗尽内存,除非我每周重新启动 SQL Server……这似乎是错误的。
这是典型的行为吗?是否可以设置一些设置来设置内存使用上限?
我使用 MySQL 已经很长时间了,发现一般查询日志和慢速查询日志对于找出服务器上发生的事情和识别瓶颈非常有用。
现在我需要使用 SQL Server。SQL Server 是否有类似的日志设施?如果有,他们叫什么?
log-files logging sql-server sql-server-2005 sql-server-2008
在 SQL Server 2008 R2 中,我有一个数据库,它每晚进行一次完整备份,每十分钟进行一次事务日志备份。数据库处于完全恢复模式。
问题是事务日志的备份文件有数百兆字节,但绝对不应该如此。数据库中没有该活动。每个备份只有十分钟。它们太大了,几天后它会完全填满硬盘。
知道是什么导致备份如此之大以及如何修复吗?
backup transaction-log sql-server sql-server-2008 database-backup
几个月前,我们在Windows 2008 R2 虚拟账户“ NT Service\MSSQLSERVER ”下安装了SQL Server 2012 ,一切顺利。
前几天,IT部门的一位管理员在SQL Server 2012上安装了全文搜索组件(问题是他想不起来他在安装过程中究竟选择了什么设置),然后就出现了很多问题:
A.我们查看了Windows Logs,在Application中,我们发现MSSQLServer有很多异常的日志,比如:
SQL Server 网络接口库无法为 SQL Server 服务注册服务主体名称 (SPN) [ MSSQLSvc/FooComputer.FooDomain.com:1433 ]。Windows 返回代码:0xffffffff,状态:63。未能注册 SPN 可能会导致集成身份验证使用 NTLM 而不是 Kerberos。这是一条情报信息。仅当身份验证策略需要 Kerberos 身份验证并且尚未手动注册 SPN 时,才需要采取进一步措施。
这似乎是原因,但不知道为什么以及如何解决它。
B.所有者是域用户的 SQL 作业(“MyDomain\FooUser”)将失败并显示以下消息:
作业失败。无法确定作业 JOBNAME 的所有者 (MyDomain\FooUser) 是否具有服务器访问权限(原因:无法获取有关 Windows NT 组/用户“MyDomain\FooUser”的信息,错误代码 0x6e。[SQLSTATE 42000](错误 15404))。
我们进行了密集的搜索,最终用“sa”替换了所有者并解决了问题,尽管它不是那么体面。不过,我们想找出原因。
C、不能像其他电脑的文件夹一样访问网络资源,比如下面的sql会返回“访问被拒绝”:
DECLARE @CopyCommand nvarchar(1000)
set @CopyCommand = 'dir ' + Char(34) + '\\FooComputer\FooFolder\' + Char(34)
EXEC master..xp_cmdshell @CopyCommand
Run Code Online (Sandbox Code Playgroud)
对于问题 C,根据 MSDN ( http://technet.microsoft.com/en-us/library/ms143504.aspx ),我们尝试授予对文件夹“MyDomain\SQLServerComputerName$”帐户的完全控制访问权限,仍然相同结果。
我们sys.dm_exec_query_stats用来追踪慢查询和违反 IO 的查询。
这很好用,我们得到了很多非常有见地的统计数据。很明显,这不如运行探查器跟踪准确,因为您不知道 SQL Server 何时决定放弃执行计划。
我们有很多查询缓存了错误的执行计划。例如如下查询:
选择前 30 名
援助
FROM 帖子 a
加入帖子 q ON q.Id = a.ParentId
加入 PostTags pt ON q.Id = pt.PostId
哪里 a.PostTypeId = 2
并且 a.DeletionDate 为 NULL
并且 a.CommunityOwnedDate 为 NULL
AND a.CreationDate > @date
AND LEN(a.Body) > 300
AND pt.Tag = @tag
AND a.Score > 0
按 a.Score DESC 排序
问题是理想计划实际上取决于所选日期(理想计划的屏幕截图):

但是,如果缓存了错误的计划,则当日期范围很大时它会完全窒息:(注意大粗线)

为了克服这个问题,我们建议使用OPTION (OPTIMIZE FOR UNKNOWN)或OPTION (RECOMPILE)
OPTIMIZE FOR UNKNOWN导致一个稍微好一点的计划,这远非最佳。执行在sys.dm_exec_query_stats.
RECOMPILE结果是选择了最佳计划,但是 …
任何有使用 SQL 2008 经验但都在 RAM 中的人?试图使某些事情更快,并且可能会继续这样做,谢谢
我们有一个在单个数据库服务器上使用 SQL Server 2008 的 Web 应用程序。所有存储都是本地的。在过去的一年里,我们一直试图让任何形式的 SQL Server 复制与我们的配置一起工作,但它不会。原因是因为我们有 2,000 多个不断更新的数据库(每个客户端一个),因此我们的测试表明所有形式的复制都过于占用资源。
每次我问这个问题时,人们都会关注我们有太多数据库这一事实。这是无法改变的(出于监管和其他原因),所以我想专注于我们如何复制数据。
我们被告知,一种选择是将所有数据移动到 SAN 并让 SAN 复制数据(或拍摄频繁的快照)。但是,如果我们的数据库服务器出现故障,在这种情况下是否存在数据库损坏的风险?是否可以利用复制到另一个 SAN 的 SAN 来提供合适的 DR 解决方案(在我们的例子中,我们最多可以丢失大约 30 分钟的数据,但我们不能丢失一整天的价值......即我们可以' t 去前一晚的备份)。
我有一个数据库 XYZ,它有一个损坏的日志文件,现在由于日志文件完全无法使用,这导致这个特定的数据库无法使用,我需要能够重建它。
我已经对这个过程进行了大量研究,但我陷入了 dbcc checkdb 的困境。
我运行了命令
alter database xyz SET single_user with immediate rollback
Run Code Online (Sandbox Code Playgroud)
随后
use master
dbcc checkdb('xyz',REPAIR_ALLOW_DATA_LOSS)
Run Code Online (Sandbox Code Playgroud)
但我一直遇到这个错误:
Msg 924, Level 14, State 1, Line 2
Database 'XYZ' is already open and can only have one user at a time.
Run Code Online (Sandbox Code Playgroud)
我研究的所有内容都表明数据库需要处于紧急模式,然后该数据库需要处于单用户模式。如果我将数据库恢复为多用户模式,则表明数据库需要处于单用户模式。好吧,我这样做,然后得到这个问题。
我跑了
select spid from master..sysprocesses where dbid = DB_ID('XYZ') and spid <> @@spid
Run Code Online (Sandbox Code Playgroud)
检查使用数据库的任何进程,但没有返回任何行,并且日志不显示有关正在恢复的数据库或任何此类性质的任何信息。DB 确实显示为“紧急情况”。
有任何想法吗?
sql-server ×10
sql-server-2008 ×10
backup ×1
database ×1
domain ×1
log-files ×1
logging ×1
memory ×1
performance ×1
permissions ×1
sql ×1
sqlite ×1
tsql ×1