我正在使用一个系统,其中日期存储为整数(实际数字(8,0)),我注意到其他系统也将日期存储为 int ,例如在此线程中的 cisco。例子
20120101 -- 01 Jan 2012
Run Code Online (Sandbox Code Playgroud)
保持数字日期系统而不使用 SQL 日期时间有什么好处吗?
现在我正在尝试遍历数字日期以查找两个日期之间的客户。如果start
和enddate
包含两个月,我会得到数千条记录,而不仅仅是 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) 这是正常的吗?确切地说,它使用了 1,068,000 KB。如果查询时间过长,它偶尔会高达 1,400,000。
我的系统总内存为 3GB,我运行的是 WinXP。是否为 SQL Server 推荐了特定数量的 RAM?
我问这个问题的原因是,我们的数据库是否有问题,如果它使用这么多内存?我们这里没有DBA,只有程序员。还
我正在使用 SQL Server 2005 Express。它不是一个庞大的数据库,只有大约 40,000 条记录
我正在使用仅具有读取权限的用户。它基本上有权限
但是,它没有对函数和存储过程的执行权限。在我的部分报告中,我调用了我自己的函数。我想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) 我还没有准备好,但在尝试从远程服务器恢复数据库后发现,如果数据库以前不存在,它就不会恢复。我会做的是
它会给我错误。我想我几乎是意外地发现了它(或者沮丧,只是在数据库顶部恢复它,并且它起作用了)。
现在,当我输入问题时,我意识到移动可能与恢复不同。对于还原,数据库必须已经存在吗?
我再次处于相同的位置以恢复我的系统上不存在的数据库。
1. 我要遵循什么程序?
2. 在远程服务器上成功恢复之前,我需要对 .bak 文件设置权限吗?
3. 或者有更好的方法吗?
我错过了什么吗?我想知道,恢复(或移动)数据库时的规则是什么。
编辑:添加对话框错误。我只是重复了这个过程。我不确定这是我之前遇到的确切错误。我重命名了我拥有的原始数据库。然后我使用 SSMS 导入。
我将两个应用程序迁移到新服务器。其中一个工作没有任何问题,但另一个遇到了后端 sql 权限问题,例如
对象“aspnet_CheckSchemaVersion”的 EXECUTE 权限被拒绝
我可以找到为什么一个应用程序可以工作而另一个不工作的原因。它们都在同一个应用程序池下运行,但使用不同的数据库。我不必为一个工作做任何事情,对于另一个我必须为每个表授予[网络服务]用户的权限,应用程序访问的存储过程。
好吧,我现在通过为网络服务设置两个数据库安全来解决这个问题。我不知道为什么我必须为一个应用程序执行此操作,而另一个应用程序不需要它。我的问题是
SQL Server Management Studio 中的 SQL Server 安全性是什么?当您单击用户 -> 属性然后转到左侧的第二页时,您基本上可以访问它们。
它是干什么用的? 它的正确用途是什么?
来自微软
证券
Run Code Online (Sandbox Code Playgroud)Lists the securables on which specific permissions have been granted or denied to this principal.
我在 MSSQL 课上教过,这是如何连接两个表
Run Code Online (Sandbox Code Playgroud)select * from FirstTable A JOIN SecondTable B on A.ID= B.ID
现在在我的职业生涯中,我遇到过这样的 JOIN 查询
Run Code Online (Sandbox Code Playgroud)select * from FirstTable A, SecondTable B where A.ID=B.ID
我知道第二种选择曾经是常态,但现在可能已经放弃了。
我发现在我加入 6+ 个表 + 有多个子查询的复杂查询中,第二种形式更容易理解,而且简短漂亮。
问题
我有一张桌子叫 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
sql-server ×4
performance ×2
permissions ×2
backup ×1
date-format ×1
functions ×1
join ×1
query ×1
restore ×1
security ×1
ssms ×1
terminology ×1