我的老板正在请求一个大于 1024 列的视图,其中他在查询视图时只会选择他想要的几列,以便实际返回的列小于 1024。为什么我可以查询大于 1024 的列,但是我无法将这个完全相同的查询保存为视图?
我正在使用 SQL Server 2012 企业版
我有 3 个具有完全相同 DDL 的表(我知道这是一个可怕的设置),但每个表都有不同的字段值。我希望能够为所有 3 个选择编写一个查询,而不是必须使用 3 个不同的选择查询。这是示例 DDL 和单个查询,可以将其合并为 1 个查询吗?
Create Table InfoForJane
(
genid int IDENTITY(1,1) PRIMARY KEY
,name varchar(500)
,numofdays varchar(100)
)
Create Table InfoForJoe
(
genid int IDENTITY(1,1) PRIMARY KEY
,name varchar(500)
,numofdays varchar(100)
)
Create Table InfoForJessie
(
genid int IDENTITY(1,1) PRIMARY KEY
,name varchar(500)
,numofdays varchar(100)
)
Run Code Online (Sandbox Code Playgroud)
以下是我希望合并为一个的查询
Select
genid
,name
,case
when numofdays NOT IN ('1-3','4-6','7-9') then '1-3'
else numofdays
end As [NumofDays]
from rashapa.munich.dbo.InfoForJane
Select
genid
,name
,case
when numofdays …Run Code Online (Sandbox Code Playgroud) 我为我的 SQL Server 设置了 AlwaysOn 可用性组。现在我想配置SSIS。我该怎么做?下面的链接提供了一些信息,但由于我不是 DBA,因此很难理解这篇文章:
AlwaysOn 可用性组和 SQL Server 作业,第 23 部分:维护计划备份和 SSIS 包
有人可以指导我在可用性组中进行 SSIS 的基本设置并解释节点之间如何同步吗?
更新
我指的是 SSIS 目录数据库 (SSISDB)
我可以在我的连接管理器中使用监听器吗?
When the database foo is not yet created and I I run this
IF db_id(N'foo') IS NOT NULL
BEGIN
ALTER DATABASE [foo] SET OFFLINE
GO
DROP DATABASE [foo]
GO
END
Run Code Online (Sandbox Code Playgroud)
I get a message
Cannot drop the database 'foo' becuase it does not exist or you do not have permission.
Why?
I have confirmed that the sql statement select db_id(N'foo') returns NULL.
我正在尝试将销售日期 >= 的所有数据提取到某个日期时间。当我执行查询时,出现以下错误:
消息 241,级别 16,状态 1,第 15 行
从字符串转换日期和/或时间时转换失败。
我应该改变什么才能让他的查询运行?下面是示例 DDL
Declare @datetime datetime = GetDate(), @sql varchar(max)
Create Table #dinonuggets
(
saledate datetime
,item varchar(500)
)
Insert Into #dinonuggets Values
('2016-03-30 12:02:00.000','chair')
,('2016-03-04 08:12:48.000','stove')
,('2016-03-07 09:37:39.000','washer')
Set @sql = 'Select * FROM #dinonuggets WHERE saledate >= '+@datetime+' '
Print @sql
Exec (@sql)
Run Code Online (Sandbox Code Playgroud)
我的预期输出将是
03/30/2016 12:02:00.000 椅子,
因为这是唯一符合标准的数据
在 SQL Server 2012 实例上,如何使用 SQL 查询获取 SQL Server 实例的名称?
我想显示当前安装在 SQL Server 中的实例名称。
设计表 A 中的每个条目都连接(1:n)到表 B 或表 C 中的条目的关系的正常方法是什么?
或者特别是:有一个用于角色、电影、剧集和电视节目季的表格。一个角色与 1) 电影或 2) 节目有关(除了 n:n 与季节(季节常规)和剧集之外)
x 可以是电影和节目的 ID。
两个相同的表(tv_characters 和 movie_characters)?
使用两个主键会更好吗(一个总是“电影”或“电视”)?
我有一个使用 ODBC 访问 SQL Server 2012 数据库的应用程序,SQLSetStmtAttr用于将SQL_SOPT_SS_CURSOR_OPTIONS选项设置为SQL_CO_FFO. 这意味着它从数据库中读取的内容由快速只进游标支持。
这在大多数情况下是可以的,但是有时快速只进游标的性能明显低于“通常”静态游标(我们将使用 default 获得的游标SQL_CO_OFF)。
问题:有没有办法强制 SQL Server 不使用快进游标?
显然,正确的方法是更改应用程序,并且该过程正在进行中,但这需要时间,同时我正在寻找临时解决方法。
到目前为止,我唯一的想法是使用它:(来自Fast Forward-only Cursors)
Fast Forward-only 游标的隐式转换
在以下情况下,仅快进游标会隐式转换为其他游标类型:
- 如果 SELECT 语句将一个或多个表与触发器表(INSERTED/DELETED)连接起来,则游标将转换为静态游标
但是,即使是临时解决方法,这似乎也有点难看。可能有更好的方法吗?
旁注:在这种情况下,仅快速向前游标表现不佳的主要原因是它们不支持并行性。
对于非快进sys.dm_exec_cursors给我:
API | 快照 | 只读 | 全球 (0)
而快进选项是:
API | 快进| 只读 | 全球 (0)
快照选项比快进选项快 5 倍。如果我查看它们的查询计划,除了DegreeOfParallelism之外,它们没有太大不同。快照是 16 而快进是 0。问题是我们正在从视图中读取(我们没有太多控制权),而这些视图在其设计中是次优的。
我观察到生产环境中的 tempdb 在初始化后已经增长到 100 GB。
我知道由于服务器负载和一些昂贵的查询导致 tempdb 在短短两天内增长。我已经观察了一个多星期,发现这个尺寸没有进一步增长并且保持不变。
我在具有 8 个逻辑核心的服务器上为 tempdb 配置了一个 mdf 文件。虽然我可以根据逻辑核心添加多个 mdf 文件。
我观察到空闲页面大小和临时数据库数据文件的物理大小在我的情况下是相同的
SELECT SUM(unallocated_extent_page_count) AS [free pages],
(SUM(unallocated_extent_page_count)*1.0/128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;
Run Code Online (Sandbox Code Playgroud)
帮助我了解是否会在不显式执行脚本以缩小空间或通过重新启动服务器以重置临时数据库分配的情况下自动回收此物理空间?
我真的不明白什么时候需要将数据库设置为离线。
我用谷歌搜索,我确实找到了任何信息或示例,我应该在哪里以及为什么将数据库设置为离线。
如果您能给我一些需要使我的数据库脱机的示例和案例,我将是完美的。