我SQL Server
在系统数据库中使用并拥有多个索引,索引碎片达到 30% 或更多。我不知道 SQL Server 会自动管理系统数据库索引还是我想管理它们。由我手动管理索引是好是坏。
提前致谢
我SQL Server
在系统数据库中使用并拥有多个索引,索引碎片达到 30% 或更多。我不知道 SQL Server 会自动管理系统数据库索引还是我想管理它们。由我手动管理索引是好是坏。
提前致谢
我使用以下命令在我的数据库中创建一个用户:
CREATE USER Test WITHOUT LOGIN
我使用测试名称创建了一个登录名。
我想将测试用户与测试登录链接。
当我使用以下命令时:
EXEC sp_change_users_login 'Update_One', 'Test', 'Test'
SQL Server 引发以下错误:
Msg 15291, Level 16, State 1, Procedure sp_change_users_login, Line 114
Terminating this procedure. The User name 'Test' is absent or invalid.
当我使用以下命令时:
ALTER USER Test WITH LOGIN = Test
SQL Server 引发波纹管错误:
Msg 33016, Level 16, State 1, Line 2
The user cannot be remapped to a login. Remapping can only be done for users that were mapped to Windows or SQL logins.
如何将测试用户与测试登录链接。
此链接的目的:我想将数据库从服务器还原到另一台服务器,并在完成还原后,映射具有服务器上现有登录名的用户。
提前致谢。
我的表格结构如下:
TbDoc (ID int , ...)
TbDocActions( ID Int, DocID Int, Date DateTime, col1 int, col2 int, ...)
我想要索引视图来获取每条TbDoc
记录的最后一个 TbDocActions 列。此视图的结果必须如下所示:
DocID , col1, col2, ...
为了通过视图获得此结果,我可以使用以下查询:
Select Z.DocID, X.*
From (Select DocID, Max(ID) as MaxActionID
From TbDocActions
Group By DocID
)Z
inner join TbDocActions X ON X.ID = Z.MaxActionID
但我希望索引视图具有更好的性能。在索引视图中我不能使用Max()
聚合函数。
我想在我的数据库中通过脚本创建新函数。脚本代码如下:
IF Exists(Select * From sys.sysobjects A Where A.name =N'fn_myfunc' and xtype=N'FN') return;
CREATE FUNCTION fn_myfunc ()
returns varchar(10)
AS Begin
...
End
但是当我执行上面的脚本时,SQL Server 会返回一个错误:
'CREATE FUNCTION' must be the first statement in a query batch.
在 SQL Server 连接语法中我们可以使用LEFT JOIN
orLEFT OUTER JOIN
和查询结果与上面的每个连接没有区别。这对我来说是一个更有用的问题。
我想为我的数据库中的每个表创建最佳索引。SQL Server 中是否有查询或工具可帮助完成此过程?
如何通过命令释放sql server的内存使用。我的系统有 16GB RAM,但是当通过 sql server 进行大量查询时,内存使用量变满了。如果我重新启动 SQL Server 服务内存使用量变为免费。但我想在每次执行大型查询后释放 sql server 的内存使用量。
当我使用而不是触发器插入表时,@@Identity
,IDENT_CURRENT('Table')
并SCOPE_IDENTITY()
返回 null。如何获得插入行的最后一个身份?