小编Jac*_*all的帖子

将日期存储为整数(数字),有什么好处

问题 1

我正在使用一个系统,其中日期存储为整数(实际数字(8,0)),我注意到其他系统也将日期存储为 int ,例如在此线程中的 cisco。例子

20120101  -- 01 Jan 2012
Run Code Online (Sandbox Code Playgroud)

保持数字日期系统而不使用 SQL 日期时间有什么好处吗?

问题2

现在我正在尝试遍历数字日期以查找两个日期之间的客户。如果startenddate包含两个月,我会得到数千条记录,而不仅仅是 60 条记录。例如:

create table #temp1(day int,capacity int) /* just a temp table */

declare @start int 
declare @end int

set @start=20111201
set @end = 20120131

while (@start <= @end) 
Begin
    insert into #temp1  /* I am storing things in #temp table so data looks pretty */
    exec usp_GetDailyCap @date1= @start

    set @start = @start + 1;    
end

select …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server date-format

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

SQL Server 2005 使用 1GB RAM

这是正常的吗?确切地说,它使用了 1,068,000 KB。如果查询时间过长,它偶尔会高达 1,400,000。

我的系统总内存为 3GB,我运行的是 WinXP。是否为 SQL Server 推荐了特定数量的 RAM?

我问这个问题的原因是,我们的数据库是否有问题,如果它使用这么多内存?我们这里没有DBA,只有程序员。还

  1. 运行多个 SQL Server 实例会影响性能吗?
  2. 运行多个数据库会影响性能吗?我们只使用 1 个,但有 5 个正在运行的数据库(旧的)

我正在使用 SQL Server 2005 Express。它不是一个庞大的数据库,只有大约 40,000 条记录

performance sql-server-2005

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

授予对存储过程、函数和视图的执行权限

我正在使用仅具有读取权限的用户。它基本上有权限

  • 连接
  • 执行

但是,它没有对函数和存储过程的执行权限。在我的部分报告中,我调用了我自己的函数。我想readonlyuser授予执行 SP、函数和视图的权限。

我遇到了 这段代码,它显示了如何为特定用户授予对存储过程和函数的执行权限。

- Grant Execute on all functions for testuser
declare @username varchar(255)  
set @username = 'testuser'  
SELECT 'grant exec on ' + QUOTENAME(ROUTINE_SCHEMA) + '.' +  
QUOTENAME(ROUTINE_NAME) + ' TO ' + @username FROM INFORMATION_SCHEMA.ROUTINES  
WHERE OBJECTPROPERTY(OBJECT_ID(ROUTINE_NAME),'IsMSShipped') = 0   
and ROUTINE_TYPE='PROCEDURE'  
Run Code Online (Sandbox Code Playgroud)

和函数

declare @username varchar(255)  
set @username = 'testuser'  
SELECT 'grant exec on ' + QUOTENAME(ROUTINE_SCHEMA) + '.' +  
QUOTENAME(ROUTINE_NAME) + ' TO ' + @username FROM INFORMATION_SCHEMA.ROUTINES  
WHERE OBJECTPROPERTY(OBJECT_ID(ROUTINE_NAME),'IsMSShipped') = …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 stored-procedures permissions functions

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

移动(恢复)之前不存在的 SQL Server 2005 数据库

我还没有准备好,但在尝试从远程服务器恢复数据库后发现,如果数据库以前不存在,它就不会恢复。我会做的是

  1. 创建一个 .bak 文件(备份数据库)
  2. 使用共享文件夹将 .bak 文件复制到远程服务器
  3. 在 SQL Server Management Studio 中运行还原以还原数据库

它会给我错误。我想我几乎是意外地发现了它(或者沮丧,只是在数据库顶部恢复它,并且它起作用了)。

现在,当我输入问题时,我意识到移动可能与恢复不同。对于还原,数据库必须已经存在吗?

我再次处于相同的位置以恢复我的系统上不存在的数据库。

1. 我要遵循什么程序?

2. 在远程服务器上成功恢复之前,我需要对 .bak 文件设置权限吗?

3. 或者有更好的方法吗?

我错过了什么吗?我想知道,恢复(或移动)数据库时的规则是什么。

编辑:添加对话框错误。我只是重复了这个过程。我不确定这是我之前遇到的确切错误。我重命名了我拥有的原始数据库。然后我使用 SSMS 导入。

在此处输入图片说明

sql-server-2005 sql-server backup permissions restore

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

什么是 SQL Server 安全对象?

我将两个应用程序迁移到新服务器。其中一个工作没有任何问题,但另一个遇到了后端 sql 权限问题,例如

对象“aspnet_CheckSchemaVersion”的 EXECUTE 权限被拒绝

我可以找到为什么一个应用程序可以工作而另一个不工作的原因。它们都在同一个应用程序池下运行,但使用不同的数据库。我不必为一个工作做任何事情,对于另一个我必须为每个表授予[网络服务]用户的权限,应用程序访问的存储过程。

好吧,我现在通过为网络服务设置两个数据库安全来解决这个问题。我不知道为什么我必须为一个应用程序执行此操作,而另一个应用程序不需要它。我的问题是

SQL Server Management Studio 中的 SQL Server 安全性是什么?当您单击用户 -> 属性然后转到左侧的第二页时,您基本上可以访问它们。

它是干什么用的? 它的正确用途是什么?

来自微软

证券

Lists the securables on which specific permissions have been granted or denied to  this principal.
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

security sql-server terminology ssms sql-server-2008-r2

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

MS SQL 中的 SQL JOIN 语法

我在 MSSQL 课上教过,这是如何连接两个表

select * from FirstTable A
JOIN SecondTable B
on A.ID= B.ID
Run Code Online (Sandbox Code Playgroud)

现在在我的职业生涯中,我遇到过这样的 JOIN 查询

select * from FirstTable A, SecondTable B
where A.ID=B.ID
Run Code Online (Sandbox Code Playgroud)

我知道第二种选择曾经是常态,但现在可能已经放弃了。

我发现在我加入 6+ 个表 + 有多个子查询的复杂查询中,第二种形式更容易理解,而且简短漂亮。

问题

  • 我应该使用哪一种?
  • 一个比另一个有优势吗?

sql-server-2008 join

4
推荐指数
2
解决办法
676
查看次数

哪个查询效率更高?

我有一张桌子叫 STUDENT

+-----------+-----------+-----------+---------------+
| StudentID | FirstName | LastName  | EnrollmenDate |
+-----------+-----------+-----------+---------------+
|         1 | x         | x         | x             |
|         2 | x         | x         | x             |
|         3 | x         | x         | x             |
+-----------+-----------+-----------+---------------+
Run Code Online (Sandbox Code Playgroud)

写一个查询,拉出最后注册的学生?

a) 按 EnrollmentDate Desc 从 STUDENTorder 中选择前 1 *

或者

b) select * from STUDENT where EnrollmentDate = (select Max(EnrollmentDate) from STUDENT)

面试的时候一般会问这个问题。一位候选人回答 b) 我期待 a)。哪个更好查询?

performance sql-server-2005 sql-server query query-performance

3
推荐指数
1
解决办法
351
查看次数