小编meh*_*tfi的帖子

如果不存在,则通过代码创建新函数

我想在我的数据库中通过脚本创建新函数。脚本代码如下:

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 t-sql sql-server-2008-r2 functions

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

识别所需索引的工具

我想为我的数据库中的每个表创建最好的索引。SQL Server 中是否有查询或工具可以帮助完成此过程?

index sql-server-2008 database-design sql-server sql-server-2008-r2

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

如何在使用而不是触发器时插入最后一个标识行

当我插入表使用INSTEAD OF触发器,@@IdentityIDENT_CURRENT('Table')SCOPE_IDENTITY()返回null。如何获取插入行的最后一个标识?

trigger sql-server-2008 sql-server t-sql identity

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

索引中填充因子的最佳值

我使用SQL Server 2008 R2并希望为每个索引中的填充因子属性设置值。我寻找配方来计算此属性的最佳值(插入记录时性能更好)。还有我如何通过为这个属性设置尊重值来衡量查询性能。

非常感谢。

index sql-server-2008 sql-server sql-server-2008-r2

7
推荐指数
1
解决办法
6792
查看次数

Sql Server 修复用户

我使用以下命令在我的数据库中创建一个用户:

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

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

使用索引视图设计上次跟踪的最佳实践

我的表结构如下:

  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()聚合函数。

database-design sql-server t-sql sql-server-2008-r2

6
推荐指数
2
解决办法
3201
查看次数

使用自连接创建索引视图

我使用SQL Server 2008 R2并知道Indexed View不能有自我加入。

我有一个树表有IDParentID列,我需要在这个表上创建索引视图自每个记录与父记录之间的连接。我可以在这个视图中模拟自连接吗?

编辑

我的表结构是:

 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

6
推荐指数
1
解决办法
3092
查看次数

释放 SQL Server 内存使用情况

如何通过命令释放sql server的内存使用。我的系统有 16GB RAM,但是当通过 sql server 获取大量查询时,内存使用量已满。如果我重新启动 SQL Server 服务内存使用量变得免费。但我想在每个巨大的查询执行后释放 sql server 的内存使用量。

sql-server-2008 sql-server sql-server-2008-r2

5
推荐指数
1
解决办法
1202
查看次数

左连接和左外连接的区别

在 SQL Server 连接语法中,我们可以使用LEFT JOINorLEFT OUTER JOIN和查询结果,上面的每个连接都没有区别。这对我来说是一个更有用的问题。

sql-server-2008 join sql-server t-sql sql-server-2008-r2

5
推荐指数
1
解决办法
528
查看次数