當我右鍵單擊TVP時,我沒有得到像'ALTER TO'這樣的選項如何更改表值參數
如何更改表值參數
回答
不能這樣做。您必須刪除/重新創建。如果您對TVP的依賴,你必須:
- 以新名稱創建新的TVP
- ALTER依賴使用(1)
- 降舊TVP
- 重新創建(1)根據原來的名稱
- ALTER依賴使用(4)
- 降(1)
謝謝,但麻煩很糟糕。 – 2016-02-18 20:34:38
我已經發現了blog post on sqltreeo.com其中有一種方法可以通過臨時刪除依賴項然後重新創建它們來自動執行該過程。
我剛纔修改了一下。
1.You應該創建下列程序:
-- Find all referencing objects to user-defined table type in @fullObjectName parameter
-- and generate DROP scripts and CREATE scripts for them
CREATE PROC [dbo].[alterTableType] (@fullObjectName VARCHAR(200))
AS
BEGIN
SET NOCOUNT ON
IF (TYPE_ID (@fullObjectName) IS NULL)
BEGIN
RAISERROR ('User-defined table type ''%s'' does not exists. Include full object name with schema.', 16,1, @fullObjectName)
RETURN
END;
WITH sources
AS
(
SELECT ROW_NUMBER() OVER (ORDER BY OBJECT_NAME(m.object_id)) RowId, definition
FROM sys.sql_expression_dependencies d
JOIN sys.sql_modules m ON m.object_id = d.referencing_id
JOIN sys.objects o ON o.object_id = m.object_id
WHERE referenced_id = TYPE_ID(@fullObjectName)
)
SELECT 'BEGIN TRANSACTION'
UNION ALL
SELECT
'DROP ' +
CASE OBJECTPROPERTY(referencing_id, 'IsProcedure')
WHEN 1 THEN 'PROC '
ELSE
CASE
WHEN OBJECTPROPERTY(referencing_id, 'IsScalarFunction') = 1 OR OBJECTPROPERTY(referencing_id, 'IsTableFunction') = 1 OR OBJECTPROPERTY(referencing_id, 'IsInlineFunction') = 1 THEN 'FUNCTION '
ELSE ''
END
END
+ SCHEMA_NAME(o.schema_id) + '.' +
+ OBJECT_NAME(m.object_id)
FROM sys.sql_expression_dependencies d
JOIN sys.sql_modules m ON m.object_id = d.referencing_id
JOIN sys.objects o ON o.object_id = m.object_id
WHERE referenced_id = TYPE_ID(@fullObjectName)
UNION ALL
SELECT 'GO'
UNION ALL
SELECT CHAR(13) + CHAR(10) + '---- WRITE HERE SCRIPT TO DROP OLD USER DEFINED TABLE TYPE AND CREATE A NEW ONE ----' + CHAR(13) + CHAR(10)
UNION ALL
SELECT
CASE
WHEN number = RowId THEN DEFINITION
ELSE 'GO'
END
FROM sources s
JOIN (SELECT DISTINCT number FROM master.dbo.spt_values) n ON n.number BETWEEN RowId AND RowId+1
UNION ALL
SELECT 'COMMIT'
END
2.然後,你應該用你的表類型的名稱作爲輸入參數運行它。在網格格式上顯示結果(因爲文本格式可能會截斷長文本),選擇整個結果表並將其複製到新的查詢窗口。
你測試過了嗎? – Shiva 2015-09-07 17:34:35
@Shiva - 是的。它爲我工作。 – BornToCode 2015-09-08 08:00:17
這很酷。節省了我很多時間 – Keith 2016-09-20 14:12:39
- 1. 如何更改PRD中的參數值
- 2. 在Zeppelin中,如何更改表格zeppelin.x.y的參數值
- 3. 值參數更改爲0
- 4. JavaScript參數更改值?
- 5. 用javascript更改參數值
- 6. 更改URL參數值
- 7. 如何在C#中的任何函數中更改參數值?
- 8. 如何使用更改值更新表
- 9. 如何更改外部函數參數
- 10. 如何在linux腳本中更改函數參數的值?
- 11. 更改函數中參數的值
- 12. 更改Java中函數參數的值
- 13. 更改數據表列值
- 14. 如何使Ruby方法傳遞輸出參數(更改引用參數的值)?
- 15. 如何更改參數的順序?
- 16. 如何使用參數更改4位?
- 17. 如何更改對象內的參數?
- 18. displayTag:如何更改displayTag參數
- 19. 如何更改oplrun中的CPLEX參數?
- 20. 如何更改圖片url參數?
- 21. 如何更改我的參數格式?
- 22. 如何更改AFNetworking2.0參數編碼?
- 23. 如何查看/更改postgresql.conf參數
- 24. Jquery TimePicker:如何動態更改參數
- 25. 如何正確更改網址參數?
- 26. 如何用systemd更改dockerd參數?
- 27. 如何使用JavaScript更改CSS參數?
- 28. 如何更改RSACryptoServiceProvider的CSP參數
- 29. 如何更改遞歸宏中的參數變量值?
- 30. 如何從事件處理程序中更改值參數?
ALTER TO for TVP? TVP是功能/過程定義的一部分。不是一個實體本身!? – Nestor 2009-11-14 15:32:51
ALTER TO選項未啓用RT? – anishMarokey 2009-11-14 15:36:17
表值參數是SQL Server 2008中的新參數類型。表值參數是使用用戶定義的表類型聲明的。我想你是問關於ALTERing用戶定義的表類型?據我所知,你可以創建和刪除一個用戶定義的表類型,但不能修改它。 – Nestor 2009-11-14 17:25:36