有没有办法检查加拿大邮政编码是否有效?不确定这样的事情是否可行:
PostalCode varchar(10) CHECK(PostalCode>='t1w1v1' and PostalCode<='t9w9v9'
Run Code Online (Sandbox Code Playgroud) 我有这个表,但检查约束给我一个错误:
列 'MedicamentRegulated' 的列 CHECK 约束引用另一列,表 'Medicaments'。
我已经看到这在 SQL Server 中是允许的,但我不知道为什么它不起作用:/
CREATE TABLE Medicaments (
MedicamentID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Name VARCHAR(50),
DateValidity DATE,
MedicamentRegulated BIT CHECK((MedicamentRegulated = 1 AND DateValidity IS NOT NULL)
OR MedicamentRegulated = 0)
)
Run Code Online (Sandbox Code Playgroud) 我的表数据是这样的:
ID Name salary date
1 a 100 1/08/2014
2 b 200 2/08/2014
.
.
.
.
26 z 2600 26/8/2014
Run Code Online (Sandbox Code Playgroud)
现在我只想返回周六或周日的行,例如:
ID Name salary date
2 ------------------------
3 -----------------------
9
10
16
17
23
24
30
31 -------------------------
Run Code Online (Sandbox Code Playgroud) 我在 SQL Server 2008 R2 机器上拥有系统管理员权限。我找到了一个脚本,它可以删除所有外键,并在测试导入后需要时为我们重新添加它们。因此,我执行以下代码时没有语法错误,因为它显示了“Alter Table [ParentTable] Drop Constraint FK_Name”...总共 23 个键,但是当我刷新服务器或数据库和表时,当我为每个表展开 Keys 节点时,我仍然看到它们吗?那么为什么不丢弃它们呢?另外,如果我想再次运行以进行测试,我是否需要将其转换为永久表或将脚本放入存储过程中?请指教。
我使用了“Pinal Dave”发布的“Swastik Mishra”中的以下脚本 http://blog.sqlauthority.com/2014/04/11/sql-server-drop-all-the-foreign-key-constraint-in- database-create-all-the-foreign-key-constraint-in-database/
SET NOCOUNT ON
DECLARE @table TABLE(
RowId INT PRIMARY KEY IDENTITY(1, 1),
ForeignKeyConstraintName NVARCHAR(200),
ForeignKeyConstraintTableSchema NVARCHAR(200),
ForeignKeyConstraintTableName NVARCHAR(200),
ForeignKeyConstraintColumnName NVARCHAR(200),
PrimaryKeyConstraintName NVARCHAR(200),
PrimaryKeyConstraintTableSchema NVARCHAR(200),
PrimaryKeyConstraintTableName NVARCHAR(200),
PrimaryKeyConstraintColumnName NVARCHAR(200)
)
INSERT INTO @table(ForeignKeyConstraintName, ForeignKeyConstraintTableSchema, ForeignKeyConstraintTableName, ForeignKeyConstraintColumnName)
SELECT
U.CONSTRAINT_NAME,
U.TABLE_SCHEMA,
U.TABLE_NAME,
U.COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE U
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS C
ON U.CONSTRAINT_NAME = C.CONSTRAINT_NAME
WHERE
C.CONSTRAINT_TYPE = 'FOREIGN KEY'
UPDATE @table SET
PrimaryKeyConstraintName …Run Code Online (Sandbox Code Playgroud) foreign-key sql-server metadata sql-server-2008-r2 alter-table
我最近将我们的数据仓库临时数据库还原到我们开发环境中的一个单独实例上。恢复后我做了一个比较,看起来数据库大小不同。Staging_Original 为 8246 MB,而 Staging_New 为 7571.63 MB。新数据库中的 2 个表似乎丢失了,并且由于某种原因,新数据库中有一个旧数据库中不存在的表。如果我执行了完整备份和还原,这怎么可能?如何获取一个数据库的精确副本并将其还原到第二个实例中?两个模型数据库似乎也相同。
备份脚本:
BACKUP DATABASE [BI_Staging] TO DISK = N'G:\BI_Staging.bak'
WITH NOFORMAT, NOINIT, NAME = N'BI_Staging-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset
where database_name=N'BI_Staging'
and backup_set_id=(select max(backup_set_id)
from msdb..backupset where database_name=N'BI_Staging' )
if @backupSetId is null
begin
raiserror(N'Verify failed. Backup information for database ''BI_Staging'' not found.', 16, 1)
end
RESTORE VERIFYONLY FROM DISK = N'G:\BI_Staging.bak'
WITH FILE = …Run Code Online (Sandbox Code Playgroud) 我的 Postgres 数据库中有一个表 (t0),其中的数据如下所示:
t1_id t2_id
1 1
2 1
2 1
4 null
4 null
5 null
Run Code Online (Sandbox Code Playgroud)
我有一个查询要返回我想要的结果:
t1_id t2_id
1 1
4 null
5 null
Run Code Online (Sandbox Code Playgroud)
我的查询看起来像这样:
(
SELECT DISTINCT ON (t2_id) t1_id, t2_id
FROM t0
WHERE t2_id IS NOT NULL
)
UNION ALL
(
SELECT DISTINCT ON (t1_id) t1_id, t2_id
FROM t0
WHERE t2_id IS NULL
)
Run Code Online (Sandbox Code Playgroud)
有没有更快的方法来执行这样的操作?这还不错,但是我在几个地方(使用连接)这样做,所有这些重复的查询似乎都会减慢速度。看来必须有更好的办法了。
这是小提琴形式的查询:http://sqlfiddle.com/#!15 /d41d8/3603
我正在寻找某人会遵循的最佳实践或分析来识别我的 SQL Server 上未使用或不活动的数据库。
我浏览了许多文章,其中说可能会寻找用户连接并激活跟踪以查找数据库使用情况,但实现这些会造成更多混乱。
请帮助我了解是否有更好、更安全的方法可以让我的数据库在确定后脱机。
作为应用程序数据库设计规范的一部分,我们被要求阻止执行一组直接从 SSMS/osql/sqlcmd 等触发的存储过程;也就是说,它们必须只被允许在应用程序本身内运行。
当我们的团队质疑这是否可行时,我们看到了一个演示,该演示将查询限制在特定系统(实际上它让查询运行,但记录到运行它的表中)。然而,这样做的过程是加密的,所以我们无法知道它是如何完成的。
我们如何做到这一点?
即使我可以直接访问物理数据库机器,我也必须dbmachine\sql在连接字段中指定,而不仅仅是实例名称。这是为什么?
我有一列值保存为十六进制。
当我运行此查询时:
select column from table
where column like '%22639935-KCN%';
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
0x24000000008B010000000089FF32323633393933352D4B434E000000
Run Code Online (Sandbox Code Playgroud)
我想将输出转换为 varchar。这应该给我一个类似于 like 语句中的值。
到目前为止,我的尝试是:
SELECT CONVERT(VARCHAR(MAX),
0x24000000008B010000000089FF32323633393933352D4B434E000000)
SELECT CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX),
'0x24000000008B010000000089FF32323633393933352D4B434E000000', 2))
Run Code Online (Sandbox Code Playgroud)
但是,我得到了这个结果:
$
如何将此十六进制值转换为 varchar?
sql-server ×9
alter-table ×1
constraint ×1
ddl ×1
foreign-key ×1
instance ×1
metadata ×1
performance ×1
postgresql ×1
security ×1
ssms ×1
t-sql ×1
union ×1