그래서 대안으로, 당신이 원하는,하지만 매우 불쾌한 일을하는 한 가지 방법을 생각할 수 있습니다
을 내가 그러나 있으리라 믿고있어 표 2 효과적으로 표를 대체이라고?
이 경우 단순히 Table1을 삭제하고 Table2를 원래 Table1의 모양으로 변환하는 동일한 이름의보기로 바꿀 수 있습니까? 그런 당신을 위해 좋은없는 경우
그런 식으로, 당신은 ... 당신은 효과적으로보기 덕분에 올바른 테이블에 액세스됩니다 놓친 코드 때문에,
을 메시지를 로그 할 필요가 없습니다 것입니다, 그럼 여기 내 예쁜 해킹 대답입니다. 그것은 당신이 xp_cmdshell을 가능에 의존하고, 해킹 주위에 얻을 수있는 등의 기능이 부작용이 허용되지 않는 것을 사용
1) 사용 xp_cmdshell을 :
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
2) 뭔가 다른 표 이름 바꾸기를 Deprecated_Table1
말
CREATE FUNCTION GetTable1()
RETURNS @Table1 TABLE
(
ID int
)
AS
BEGIN
DECLARE @sql varchar(3000)
DECLARE @cmd varchar(4000)
SELECT @sql = 'INSERT INTO MyLog Values(''Oops a daisy'')'
SELECT @cmd = 'sqlcmd -S ' + @@servername + ' -d ' + db_name() + ' -Q "' + @sql + '"'
EXEC master..xp_cmdshell @cmd, 'no_output'
INSERT INTO @Table1
SELECT ID FROM Deprecated_Table1
RETURN
END
4) 표 그쪽라는 뷰를 작성합니다
3) 또한 표에서 데이터를 반환하고 함수를 만들기 로그에 메시지를 기록 마에 따라서 위의 함수를 호출하고 액세스하는 레거시 코드는 메시지를 기록합니다
CREATE VIEW Table1 AS SELECT * FROM GetTable1()
그것의 깊이 무서운,하지만이 단지 일시적인 조치입니다 생각하기 때문에 당신은 당신이했습니다 모든 코드를 찾을 때 놓친다면 아마도 도움이 될 것입니다 ...
접근 방식은 {DBServer, Oracle, MySql 등}을 사용하는 DB 제품에 따라 다릅니다. 어느 쪽을 사용하고 있습니까? – tgolisch
@tgolisch SqlServer 2012를 사용하고 있습니다. –