小编A-K*_*A-K的帖子

查找SQL记录中的并发用户数

我有以下结构表:

UserID   StartedOn          EndedOn
1        2009-7-12T14:01    2009-7-12T15:01 
2        2009-7-12T14:30    2009-7-12T14:45
3        2009-7-12T14:47    2009-7-12T15:30
4        2009-7-12T13:01    2009-7-12T17:01
5        2009-7-12T14:15    2009-7-12T18:01
6        2009-7-12T11:01    2009-7-12T19:01
1        2009-7-12T16:07    2009-7-12T19:01
Run Code Online (Sandbox Code Playgroud)

我需要找到在线的最大并发用户数.在上表中,结果将是5,因为用户set1 = {1,2,4,5,6}和set2 = {1,3,4,5,6}在同一时期在线.

您是否知道如何仅使用T-SQL来计算此值?

t-sql sql-server

12
推荐指数
1
解决办法
7533
查看次数

存储过程的SQL Server权限与动态SQL

我有一个具有应用程序角色的数据库.角色成员都属于Active Directory中的组.我没有赋予角色权限以从表中选择,而是赋予角色对其需要调用的所有存储过程的执行权限.

这工作正常,除了我的一个存储过程,它正在构建一些动态SQL并调用sp_executesql.

动态sql看起来像这样:

SET @SQL = N'
SELECT * 
FROM dbo.uvView1 
INNER JOIN uvView2 ON uvView1.Id = uvView2.Id'

EXEC sp_executesql @SQL
Run Code Online (Sandbox Code Playgroud)

此角色的用户无法调用存储过程.它给出了以下错误,我想这是一种预期:

对象'uvView1',数据库'Foobar',架构'dbo'上的SELECT权限被拒绝.

有没有办法让我的用户成功执行此proc而不赋予动态SQL中所有视图的角色权限?

sql sql-server stored-procedures database-security

11
推荐指数
1
解决办法
6230
查看次数

Sql Server Reporting Services与通过.NET应用程序进行报告

我的老板要我在不久的将来创建一些报告,我想他想使用SQL Server Reporting Services来部署报告.考虑到我们是一个非常小的组织,我不太确定这将是一个好主意,我看不到我们正在充分利用或需要此解决方案提供的功能,如设置用户,组和订阅.

虽然我之前没有使用SSRS,但我已经观看了为期3天的网络研讨会,看起来这是一件很好的事情,对于简单的情况来说很好但是当需求变得更加复杂时会变得很痛苦并且受到限制.我会将报告部署为.net应用程序中的本地报告(.rdlc),因为:

  1. 我宁愿用.NET然后用SQL处理和格式化数据.当然你可以使用CLR,但这条路线看起来似乎更难以维护,而不仅仅像处理.NET应用程序那样处理数据.
  2. 添加参数控件时UI的限制 - 如果我记得你对布局没有太多控制权.

所以我想我的问题是SSRS在什么情况下运作良好,哪些情况不好?我的观点是有效还是我只是怀疑论者?

.net sql-server rdlc reporting-services

10
推荐指数
2
解决办法
3052
查看次数

如何使此代码更具可读性?

我今天写了这个,我很惭愧.我需要做些什么来使这些混乱的东西更准确和可读?

switch ((RequestReportsCalculatingStoredProcedures.RequestReportStoredProcedureType)Enum.Parse(typeof(RequestReportsCalculatingStoredProcedures.RequestReportStoredProcedureType), ihdType.Value))
    {
            //REF:This can (but should it?) be refactored through strategy pattern
        case RequestReportsCalculatingStoredProcedures.RequestReportStoredProcedureType.ReportPlanWithEffects:
            grvEconomicCriteria.DataSource = RequestReportsCalculatingStoredProcedures.ReportsDataParser(
                            RequestReportsCalculatingStoredProcedures.ReportPlanWithEffects(requestNo, RequestReportsCalculatingStoredProcedures.GetAlgorithmNoByRequestNo(requestNo)));
            break;
        case RequestReportsCalculatingStoredProcedures.RequestReportStoredProcedureType.ReportPlanWithEffectsForFacts:
            DateTime factDate;
            try
            {
                factDate = Convert.ToDateTime(ihdDate.Value);
            }
            catch(FormatException)
            {
                grvEconomicCriteria.DataSource = RequestReportsCalculatingStoredProcedures.ReportsDataParser(
                            RequestReportsCalculatingStoredProcedures.ReportPlanWithEffectsForFacts(requestNo, RequestReportsCalculatingStoredProcedures.GetAlgorithmNoByRequestNo(requestNo), DateTime.MinValue));
                break;
            }
            grvEconomicCriteria.DataSource = RequestReportsCalculatingStoredProcedures.ReportsDataParser(
                            RequestReportsCalculatingStoredProcedures.ReportPlanWithEffectsForFacts(requestNo, RequestReportsCalculatingStoredProcedures.GetAlgorithmNoByRequestNo(requestNo), factDate));
            break;
        default:
            break;
    }
Run Code Online (Sandbox Code Playgroud)

c# coding-style readability

10
推荐指数
4
解决办法
648
查看次数

使用LINQ和Entity Framework获取存储过程输出参数

我创建了一个存储过程,它接受参数来创建用户.如果用户已存在,则将输出参数设置为"用户已存在",并且不执行任何操作.

现在我已将此函数(InsertNewUser)映射到我的实体框架,并调用它如下:

context.InsertNewUser(email, name, passwordhash, salt, ???)

??? 是我遇到麻烦的地方.在存储过程中,此参数是OUTPUT参数.我尝试声明一个字符串,然后传入"out declaredString",但这不正确.

我不确定我是以正确的方式,任何想法?

这是存储过程:

ALTER PROCEDURE dbo.InsertNewUser

    (
    @eMail nvarchar(256),
    @firstName nvarchar(256),
    @lastName nvarchar(256),
    @passwordHash nvarchar(256),
    @salt nvarchar(256),
    @output nvarchar(256) OUTPUT
    )

AS
    /* Saves a user to the db. */
    BEGIN
    --First check if the user doesn't exist
    IF EXISTS (SELECT eMail FROM UserSet WHERE eMail = @eMail)  
        --Return that user exists
        SET @output = 'User exists' 
    ELSE    
        INSERT INTO UserSet
        VALUES (@eMail, @firstName, @lastName, @passwordHash, @salt)
    END

c# linq stored-procedures linq-to-sql

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

是否可以使用没有文件的sql server批量插入?

好奇如果可能:app服务器和db服务器生活在不同的地方(显然).app服务器当前生成一个用于sql server bulk insert的文件.

这需要DB和app服务器能够查看位置,并且在不同环境中使配置更加困难.

我想知道的是:在这种情况下是否可以绕过文件系统?也许我可以将数据传递给sql server并让它生成文件?

我在sql server 2008上,如果这有所不同.

谢谢!

sql sql-server bulkinsert

8
推荐指数
1
解决办法
2880
查看次数

SQL Server中的综合索引与INCLUDE覆盖索引

我知道综合指数总是从左到右使用(例如,如果指数在城市,州,WHERE City ="Blah"或WHERE City ="Blah"AND St​​ate ="AA"将正常工作但WHERE State ="AA " 不会).

这个原理是否同样适用于INCLUDE索引?

提前致谢!

粘土

sql-server indexing database-design composite include

8
推荐指数
1
解决办法
6872
查看次数

如何判断变量(-v)是否在命令行中定义(SQLCMD)

有没有办法判断是否使用SQLCMD在命令行上定义了变量?

这是我的命令行:

sqlcmd -vDB="EduC_E100" -i"Z:\SQL Common\Admin\ProdToTest_DB.sql"

ProdToTest_DB.sql里面我想设置某种条件IF来检查变量是否不存在,如果不存在则定义它.

IF NOT $(DB)
:setvar DB "C_Q200"
END

我想允许脚本从命令行和SSMS内部运行.

提前致谢.

sql-server sql-server-2005 sqlcmd

8
推荐指数
1
解决办法
4830
查看次数

存储过程什么都不返回

此存储过程不起作用.我检查了SQL,并在直接解析到DB时返回正确的值.真奇怪啊!它只返回0行.

可能有什么不对?

ALTER PROCEDURE dbo.GetSaltOfUser

 (
 @eMail nvarchar

 )

AS
DECLARE @result nvarchar
 /* SET NOCOUNT ON */
BEGIN
   SELECT @result = salt
   FROM UserSet
   WHERE eMail = @eMail
   RETURN @result
END

sql t-sql sql-server oop stored-procedures

8
推荐指数
1
解决办法
3207
查看次数

从班级继承会在以后伤害你吗?

你可以在我们从一个类继承的时候提供场景,它可以工作一段时间,但是其他东西会改变并引入一个bug吗?我想出了以下情况:

  • 为了实现Rectangle-with-hole,我们继承自Rectangle类.在构造函数中,我们检查孔是否在矩形内
  • 后来有人添加了一个新方法Resize到类Rectangle.他们不检查洞是否仍然在里面.
  • 在Resize之后,我们可以使用带有孔的矩形带孔而不是矩形内部,这是一个错误.

如果我选择在C#中使用对象继承,我应该注意哪些其他问题.

c# oop inheritance

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