我想在我的数据库中通过脚本创建新函数。脚本代码如下:
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
Run Code Online (Sandbox Code Playgroud)
但是当我执行上面的脚本时,SQL Server 返回一个错误:
'CREATE FUNCTION' must be the first statement in a query batch.
Run Code Online (Sandbox Code Playgroud) 我想为我的数据库中的每个表创建最好的索引。SQL Server 中是否有查询或工具可以帮助完成此过程?
index sql-server-2008 database-design sql-server sql-server-2008-r2
当我插入表使用INSTEAD OF触发器,@@Identity,IDENT_CURRENT('Table')并SCOPE_IDENTITY()返回null。如何获取插入行的最后一个标识?
我使用SQL Server 2008 R2并希望为每个索引中的填充因子属性设置值。我寻找配方来计算此属性的最佳值(插入记录时性能更好)。还有我如何通过为这个属性设置尊重值来衡量查询性能。
非常感谢。
我使用以下命令在我的数据库中创建一个用户:
CREATE USER Test WITHOUT LOGIN
Run Code Online (Sandbox Code Playgroud)
我用测试名称创建了一个登录名。
我想将测试用户与测试登录联系起来。
当我使用以下命令时:
EXEC sp_change_users_login 'Update_One', 'Test', 'Test'
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)
当我使用以下命令时:
ALTER USER Test WITH LOGIN = Test
Run Code Online (Sandbox Code Playgroud)
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. …Run Code Online (Sandbox Code Playgroud) sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012 logins
我的表结构如下:
TbDoc (ID int , ...)
TbDocActions( ID Int, DocID Int, Date DateTime, col1 int, col2 int, ...)
Run Code Online (Sandbox Code Playgroud)
我想要索引视图来获取每条TbDoc记录的最后一个 TbDocActions 列。此视图的结果必须如下所示:
DocID , col1, col2, ...
Run Code Online (Sandbox Code Playgroud)
为了通过视图获得此结果,我可以使用以下查询:
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
Run Code Online (Sandbox Code Playgroud)
但我希望索引视图具有更好的性能。在索引视图中我不能使用Max()聚合函数。
我使用SQL Server 2008 R2并知道Indexed View不能有自我加入。
我有一个树表有ID和ParentID列,我需要在这个表上创建索引视图自每个记录与父记录之间的连接。我可以在这个视图中模拟自连接吗?
编辑
我的表结构是:
SAM.Detail (DetailID Int, ParentDetailID Int, Quantity Int, ...)
Run Code Online (Sandbox Code Playgroud)
我的查询是:
Select A.DetailID,
A.Quantity - SUM(B.Quantity) as RemainQuantity,
COUNT_BIG(*) as CountBig
From SAM.Detail A
inner join SAM.Detail B ON B.ParentDetailID = A.DetailID
Group By A.DetailID, A.Quantity
Run Code Online (Sandbox Code Playgroud) sql-server-2008 sql-server sql-server-2008-r2 view materialized-view
如何通过命令释放sql server的内存使用。我的系统有 16GB RAM,但是当通过 sql server 获取大量查询时,内存使用量已满。如果我重新启动 SQL Server 服务内存使用量变得免费。但我想在每个巨大的查询执行后释放 sql server 的内存使用量。
在 SQL Server 连接语法中,我们可以使用LEFT JOINorLEFT OUTER JOIN和查询结果,上面的每个连接都没有区别。这对我来说是一个更有用的问题。