B . 带 有 F O R R E P L I C A T I O N 选 项 的 存 储 过 程 C . 带 有 W I T H E N C R Y P T I O N 选 项 的 存 储 过 程 D . 使 用 R E C O M P I L E 选 项 的 存 储 过 程 A n s w e r : C D
1 8 . 你 有 一 个 S Q L S e r v e r 数 据 库 。 数 据 库 中 有 两 个 架 构 M a r k e t i n g 和 S a l e s 。 M a r k e t i n g 架构 拥 有 者 是 M a r k e t i n g M a n a g e r , S a l e s 架 构 拥 有 者 是 S a l e s M a n a g e r 。 现 在 有 一 个 用 户 J o h n必 须 使 用 存 储 过 程 M a r k e t i n g . G e t S a l e s S u m m a r y 访 问 S a l e s . O r d e r s 表 。 J o h n 没 有S a l e s . O r d e r s 表 的 S E L E C T 权 限 。 但 用 户 S a l e s U s e r 具 有 S a l e s . O r d e r s 表 的 S E L E C T 权 限 。 你必 须 给 J o h n 和 M a r k e t i n g . G e t S a l e s S u m m a r y 存 储 过 程 合 适 的 权 限 。 你 应 该 怎 么 做 ?
A . M a r k e t i n g . G e t S a l e s S u m m a r y 创 建 时 应 该 使 用 E X E C U T E A S ' S a l e s U s e r ' 子 句 。J o h n 应 该 授 予 E X E C U T E M a r k e t i n g . G e t S a l e s S u m m a r y 的 权 限
B . M a r k e t i n g . G e t S a l e s S u m m a r y 创 建 时 应 该 使 用 E X E C U T E A S O W N E R 子 句 。J o h n 应 该 授 予 E X E C U T E W I T H G R A N T O P T I O N o n M a r k e t i n g . G e t S a l e s S u m m a r y .
C . M a r k e t i n g . G e t S a l e s S u m m a r y 创 建 时 应 该 使 用 E X E C U T E A S C A L L E R 子 句 。 J o h n 应 该 授予 I M P E R S O N A T E 权 限 。
D . M a r k e t i n g . G e t S a l e s S u m m a r y 创 建 时 不 使 用 E X E C U T E A S 子 句 。J o h n 应 该 授 予 S a l e s . O r d e r s 表 的 S E L E C T 权 限 。 A n s w e r : A
19 你需要创建一个接收名为@Customers 表值参数的存储过程。你应使用哪个代码?
A. CREATE PROCEDURE AddCustomers (@Customers varchar(max))
B. CREATE PROCEDURE AddCustomers (@Customers Customer READONLY) C. CREATE PROCEDURE AddCustomers (@Customers CustomerType OUTPUT) D. CREATE PROCEDURE ADDCUSTOMERS(@Customers varchar (max)) AS
EXTERNAL NAME Customer.Add.NewCustomer
答案:CREATE PROCEDURE AddCustomers(@Customers Customer READONLY)
2 0 . 你 有 一 个 计 算 列 , 该 计 算 列 使 用 用 户 自 定 义 函 数 来 计 算 。 这 个 用 户 自 定 义 函 数 返 回一 个 格 式 化 的 账 号 。 为 了 提 高 查 询 性 能 , 必 须 在 该 计 算 列 上 创 建 索 引 。 对 于 这 个 用 户 自定 义 函 数 你 应 该 关 联 什 么 样 的 对 象 属 性 组 合 ?
A . I s D e t e r m i n i s t i c = T r u e I s S y s t e m V e r i f i e d = T r u e U s e r D a t a A c c e s s = F a l s e S y s t e m D a t a A c c e s s = F a l s e
B . I s D e t e r m i n i s t i c = T r u e I s S y s t e m V e r i f i e d = T r u e I s P r e c i s e = T r u e
I s T a b l e F u n c t i o n = T r u e
第 6 页
C . I s D e t e r m i n i s t i c = F a l s e I s S y s t e m V e r i f i e d = T r u e U s e r D a t a A c c e s s = F a l s e S y s t e m D a t a A c c e s s = F a l s e
D . I s D e t e r m i n i s t i c = F a l s e I s S y s t e m V e r i f i e d = T r u e I s P r e c i s e = T r u e
S y s t e m D a t a A c c e s s = F a l s e
A n s w e r : A
2 1 . 在 一 个 给 定 的 子 句 中 , 你 要 判 别 出 特 定 的 年 份 2 月 是 否 包 含 有 2 9 天 , 你 应 该 使 用 什 么对 象 ?
A . D M L t r i g g e r ( D M L 触 发 器 ) B . S t o r e d p r o c e d u r e ( 存 储 过 程 )
C . T a b l e - v a l u e d f u n c t i o n ( 表 值 函 数 ) D . S c a l a r - v a l u e d f u n c t i o n ( 标 量 函 数 ) A n s w e r : D
2 2 . 你 创 建 的 一 个 函 数 引 用 了 一 张 表 , 你 需 要 确 保 该 表 不 能 被 删 除 。 创 建 函 数 你 应 该 使用 哪 个 选 项 ? A. WITH ENCRYPTION B. WITH EXECUTE AS
C. WITH SCHEMABINDING
D. WITH RETURNS NULL ON NULL INPUT A n s w e r : C 2 3 .
你 在 使 用 微 软 S Q L S e r v e r 2 0 0 8 开 发 数 据 库 。 数 据 库 中 包 含 的 表 如 图 所 示 。
要 求 你 做 到 : 假 如 p a r t s 是 属 于 某 个 k i t , 那 么 不 能 被 删 除 , 并 且 此 行 的 I s D e l e t e d 列 设 置 成 ? T r u e ? 。 假 如
p a r t s 不 属 于 某 个 k i t , 那 么 可 以 删 除 。 在 触 发 器 中 你 使 用 了 以 下 的 T -
第 7 页
S Q L 代 码 :
UPDATE p
SET IsDeleted = 1
FROM KitPart kp
JOIN deleted d ON kp.PartID = d.PartID
JOIN Part p ON kp.PartID = p.PartID;
DELETE FROM p
FROM Part p
JOIN deleted d ON p.PartID = d.PartID
LEFT OUTER JOIN KitPart kp ON p.PartID = kp.PartID
WHERE kp.KitID IS NULL;
你 必 须 在 触 发 器 中 执 行 这 个 T - S Q L 代 码 , 你 应 该 选 择 哪 种 触 发 器 语 法 ?
A. CREATE TRIGGER tr_Part_d ON Part AFTER DELETE AS BEGIN ... END
B. CREATE TRIGGER tr_Part_d ON Part INSTEAD OF DELETE AS BEGIN ...... END
C. CREATE TRIGGER tr_KitPart_d ON KitPart AFTER DELETE AS BEGIN ...... END
D. CREATE TRIGGER tr_KitPart_d ON KitPart INSTEAD OF DELETE AS BEGIN ...... END
A n s w e r : B
2 4 . 你 有 个 第 三 方 的 应 用 程 序 , 这 个 应 用 程 序 直 接 向 表 中 插 入 数
第 8 页
据 。 现 在 你 对 这 张 表 增加 两 个 新 列 , 这 两 新 列 不 能 接 受 空 值 , 并 且 不 能 使 用 默 认 值 。 你 要 确 保 增 加 的 新 列 不 能中 断 这 个 第 三 方 应 用 程 序 的 运 行 。 你 应 该 如 何 做 ? A . 创 建 D D L 触 发 器 。 B . 创 建 存 储 过 程 。
C . 创 建 A F T E R I N S E R T 触 发 器 。
D . 创 建 I N S T E A D O F I N S E R T 触 发 器 。 A n s w e r : D
2 5 . 你 的 数 据 库 里 有 两 张 表 O r d e r 和 O r d e r D e t a i l s , 这 两 张 表 存 储 了 订 单 信 息 。 他 们 之 间 通过 O r d e r I D 列 相 互 关 联 。 你 的 业 务 要 求 O r d e r 表 中 的 L a s t M o d i f i e d D a t e 列 必 须 能 反 映 出O r d e r D e t a i l s 表 中 相 关 订 单 改 变 的 日 期 和 时 间 。 你 需 要 创 建 一 个 触 发 器 来 完 成 你 的 业 务需 求 。 你 应 该 使 用 哪 一 个 T - S Q L 语 句 ?
A. CREATE TRIGGER [uModDate] ON [OrderDetails] INSTEAD OF UPDATE FOR REPLICATION AS
UPDATE [Order]
SET [LastModifiedDate] = GETDATE() FROM inserted
WHERE inserted.[OrderID] = [Order].[OrderID];
B. CREATE TRIGGER [uModDate] ON [Order] INSTEAD OF UPDATE NOT FOR REPLICATION AS
UPDATE [Order]
SET [LastModifiedDate] = GETDATE() FROM inserted
WHERE inserted.[OrderID] = [Order].[OrderID];
C. CREATE TRIGGER [uModDate] ON [Order] AFTER UPDATE FOR REPLICATION AS
UPDATE [Order]
SET [LastModifiedDate] = GETDATE() FROM inserted
WHERE inserted.[OrderID] = [Order].[OrderID];
D. CREATE TRIGGER [uModDate] ON [OrderDetails] AFTER UPDATE NOT FOR REPLICATION AS
UPDATE [Order]
SET [LastModifiedDate] = GETDATE() FROM inserted
WHERE inserted.[OrderID] = [Order].[OrderID]; A n s w e r : D
2 6 . 你 需 要 确 保 表 不 能 从 数 据 库 中 删 除 , 你 应 该 如 何 做 ?
第 9 页
A . 创 建 含 有 C O M M I T 的 D D L 触 发 器 。 B . 创 建 含 有 C O M M I T 的 D M L 触 发 器 。 C . 创 建 含 有 R O L L B A C K 的 D D L 触 发 器 。 D . 创 建 含 有 R O L L B A C K 的 D M L 触 发 器 。 A n s w e r : C
2 7 . 你 负 责 S Q L - S e r v e r 数 据 库 ,你 要 求 只 能 在 每 个 月 的 第 一 天 可 以 添 加 和 修 改 表 。你 必 须确 保 在 其 他 的 时 间 尝 试 修 改 和 创 建 表 不 能 成 功 , 并 且 收 到 错 误 信 息 。 你 应 该 使 用 哪 个T - S Q L 语 句 ?
A. CREATE TRIGGER TRG_TABLES_ON_FIRST ON DATABASE FOR CREATE_TABLE AS
IF DATEPART(day,getdate())>1 BEGIN
RAISERROR ('Must wait til next month.', 16, 1)
END
B. CREATE TRIGGER TRG_TABLES_ON_FIRST ON DATABASE FOR CREATE_TABLE,ALTER_TABLE AS
IF DATEPART(day,getdate())>1 BEGIN
RAISERROR ('Must wait til next month.', 16, 1)
END C. CREATE TRIGGER TRG_TABLES_ON_FIRST ON DATABASE FOR CREATE_TABLE,ALTER_TABLE AS
IF DATEPART(day,getdate())>1 BEGIN
ROLLBACK
RAISERROR ('Must wait til next month.', 16, 1) END
D. CREATE TRIGGER TRG_TABLES_ON_FIRST ON ALL SERVER FOR ALTER_DATABASE AS
IF DATEPART(day,getdate())>1 BEGIN
ROLLBACK
RAISERROR ('Must wait til next month.', 16, 1)
END
A n s w e r : C
2 8 . 在 数 据 库 中 有 一 个 C L R 程 序 集 ,这 个 程 序 集 仅 仅 引 用 了 来 自 微 软 . N E T 框 架 的 程 序 集
且 不 访 问 外 部 的 资 源 。 你 需 要 以 最 小 的 权 限 来 部 署 这 个 程 序 集 , 要 确 保 数 据 库 尽 可 能 安 全 , 你 应 该 设 置 什 么 选 项 ?
A. PERMISSION_SET = SAFE TRUSTWORTHY ON B. PERMISSION_SET = SAFE TRUSTWORTHY OFF C. PERMISSION_SET = UNSAFE TRUSTWORTHY ON
D. PERMISSION_SET = EXTERNAL_ACCESS TRUSTWORTHY OFF A n s w e r : B
注 : S A F E 不 能 访 问 外 部 资 源 , U N S A F E 可 以 访 问 外 部 资 源 , U N S
第 10 页