查询:
SELECT
name AS TableName,
create_date AS CreatedDate,
modify_date as ModifyDate
FROM sys.tables
order by ModifyDate;
Run Code Online (Sandbox Code Playgroud)
...将告诉我上次创建和修改表的时间(从 DDL 的角度)。但我想知道上次从表中插入或删除实际数据的时间。是否可以在 SQL Server 中获得它?
在我的 SQL Server 数据库中,我有一datetime
列。
创建代表列long
值的新列的好方法是什么datetime
?在long
将表示了若干秒。
我想如果我可以将它转换为longs
,那么在一段时间内按查询分组会更容易,因为我可以将长数除以固定数量。
该表是静态的,不会更新或删除数据。
是否可以检查何时将特定行插入到 SQL Server 中的特定表中?如果这有帮助,该表有一个索引。
我需要为已经插入行的现有表执行此操作。
谢谢。
我有一个日期时间列,我可以轻松地在我的日期时间列上使用 group by 运行查询。但是,我想运行组查询
我该怎么做呢?
有人知道我如何列出 SQL Server 实例中的准备好的语句吗?
我正在使用 MS Sql Server Mgt Studio。
我检查了其他一些报告显示正常。其他,例如:顶级交易,所有区块交易,我得到错误:索引(零基数)必须大于或等于零且小于参数列表的大小。
任何想法可能是错误的?
我试图找出各种表中的许多行占用的磁盘大小。
我可以通过查询定义这些行。如何找出与 SQL Server 中的结果集对应的实际磁盘大小?
我之所以想知道这一点,是因为我正在尝试分析一个多租户系统。我试图获得每个租户在系统上占用的总大小。所以我需要与每个租户有关的所有行的大小以及每个租户在索引表中使用的大小等。
租户都共享相同的架构,因此不容易做到。
我有一张人桌。我还有一个汽车桌和书桌。车表和书表都有外键回人。
我正在尝试计算每个人拥有的书籍和汽车的数量。我试过:
SELECT
Person.Name,
COUNT(BooK.bookid) books,
COUNT(Car.CarId) cars
FROM Person, Book, Car
WHERE Person.ID = Book.PersonID = Car.PersonID
Run Code Online (Sandbox Code Playgroud)
但我得到:
Incorrect syntax near '='
Run Code Online (Sandbox Code Playgroud) 是否可以将表名传入存储过程?
例如,假设您有同一个表的多个视图。它们都具有完全相同的结构。
您需要一个可以为任何视图运行的存储过程。
就像是:
create procedure myprocedure
@tableName varchar(50) = ''
select blah from @tableName where blah = blah2
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时,我得到
Must declare the table variable @tablename
Run Code Online (Sandbox Code Playgroud)
任何想法我怎么能做到这一点?
考虑两种更新数据的方法:
Approach 1:
Update Table 1, commit
Update Table 2, commit
Update Table 3, commit
Approach 2:
Update Table 1, Table 2, Table 3, commit.
Run Code Online (Sandbox Code Playgroud)
现在方法 1 不是原子的并且使用三个事务。然而,可以说方法 2 会更长时间地挂在锁上,因此也不会扩展。在不需要真正原子性的场景中,是否可以论证方法 1 的性能会更好,因为它不会长时间挂在锁上。
问题是,您需要统计数据和证据来做出良好的架构决策,而不仅仅是推测。我想为 SqlServer 设置跟踪,以便我可以了解两种方法之间的性能差异有多大?我想知道是1ms还是500ms?
我猜不是那么多,但希望证实我的怀疑。
非常感谢。