[推荐] (SqlServer)批量清理指定数据库中所有数据
[ 推荐 ] (SqlServer) 批量清理指定数据库中所有数据 通过知识共享树立个人品牌。 在实际应用中,当我们准备把一个项目移交至客户手中使用时,我们需要把库中所有表先前的测试数据清空,以给客户一个干净的数据库,如果涉及的表很多,要一一的清空,不仅花费
[推荐] (SqlServer)批量清理指定数据库中所有数据
——通过知识共享树立个人品牌。
在实际应用中,当我们准备把一个项目移交至客户手中使用时,我们需要把库中所有表先前的测试数据清空,以给客户一个干净的数据库,如果涉及的表很多,要一一的清空,不仅花费时间,还容易出错以及漏删,在这儿我提供了一个方法,可快捷有效的清空指定数据库所有表的数据。仅供参考,欢迎交流不同意见。
--Remove all data from a database
SET NOCOUNT ON
--Tables to ignore
DECLARE @IgnoreTables
TABLE (TableName varchar(512))
INSERT INTO @IgnoreTables (TableName) VALUES ('sysdiagrams')
DECLARE @AllRelationships
TABLE (ForeignKey varchar(512)
,TableName varchar(512)
,ColumnName varchar(512)
,ReferenceTableName varchar(512)
,ReferenceColumnName varchar(512)
,DeleteRule varchar(512))
INSERT INTO @AllRelationships
SELECT f.name AS ForeignKey,
OBJECT_NAME(f.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id,
fc.parent_column_id) AS ColumnName,
OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName,
COL_NAME(fc.referenced_object_id,
fc.referenced_column_id) AS ReferenceColumnName,
delete_referential_action_desc as DeleteRule
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc
ON f.OBJECT_ID = fc.constraint_object_id
DECLARE @TableOwner varchar(512)
DECLARE @TableName varchar(512)
DECLARE @ForeignKey varchar(512)
DECLARE @ColumnName varchar(512)
DECLARE @ReferenceTableName varchar(512)
DECLARE @ReferenceColumnName varchar(512)
DECLARE @DeleteRule varchar(512)
PRINT('Loop through all tables and switch all constraints to have a delete rule of CASCADE')
DECLARE DataBaseTables0
CURSOR FOR
SELECT SCHEMA_NAME(t.schema_id) AS schema_name, t.name AS table_name
FROM sys.tables AS t;
OPEN DataBaseTables0;
FETCH NEXT FROM DataBaseTables0
INTO @TableOwner,@TableName;
WHILE @@FETCH_STATUS = 0
BEGIN
IF (NOT EXISTS(SELECT TOP 1 1 FROM @IgnoreTables WHERE TableName = @TableName))
BEGIN
PRINT '['+@TableOwner+'].[' + @TableName + ']';
DECLARE DataBaseTableRelationships CURSOR FOR
SELECT ForeignKey, ColumnName, ReferenceTableName, ReferenceColumnName
FROM @AllRelationships
WHERE TableName = @TableName
OPEN DataBaseTableRelationships;
FETCH NEXT FROM DataBaseTableRelationships INTO @ForeignKey, @ColumnName, @ReferenceTableName, @ReferenceColumnName;
IF @@FETCH_STATUS 0
PRINT '=====> No Relationships' ;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT '=====> switching delete rule on ' + @ForeignKey + ' to CASCADE';
BEGIN TRANSACTION
BEGIN TRY
EXEC('
ALTER TABLE ['+@TableOwner+'].[' + @TableName + ']
DROP CONSTRAINT '+@ForeignKey+';
ALTER TABLE ['+@TableOwner+'].[' + @TableName + '] ADD CONSTRAINT
'+@ForeignKey+' FOREIGN KEY
(
'+@ColumnName+'
) REFERENCES '+@ReferenceTableName+'
(
'+@ReferenceColumnName+'
) ON DELETE CASCADE;
');
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT '=====> can''t switch ' + @ForeignKey + ' to CASCADE, - ' +
CAST(ERROR_NUMBER() AS VARCHAR) + ' - ' + ERROR_MESSAGE();
ROLLBACK TRANSACTION
END CATCH;
FETCH NEXT FROM DataBaseTableRelationships INTO @ForeignKey, @ColumnName, @ReferenceTableName, @ReferenceColumnName;
END;
CLOSE DataBaseTableRelationships;
DEALLOCATE DataBaseTableRelationships;
END
PRINT '';
PRINT '';
FETCH NEXT FROM DataBaseTables0
INTO @TableOwner,@TableName;
END
CLOSE DataBaseTables0;
DEALLOCATE DataBaseTables0;
PRINT('Loop though each table and DELETE All data from the table')
DECLARE DataBaseTables1 CURSOR FOR
SELECT SCHEMA_NAME(t.schema_id) AS schema_name, t.name AS table_name
FROM sys.tables AS t;
OPEN DataBaseTables1;
FETCH NEXT FROM DataBaseTables1
INTO @TableOwner,@TableName;
WHILE @@FETCH_STATUS = 0
BEGIN
IF (NOT EXISTS(SELECT TOP 1 1 FROM @IgnoreTables WHERE TableName = @TableName))
BEGIN
PRINT '['+@TableOwner+'].[' + @TableName + ']';
PRINT '=====> deleting data from ['+@TableOwner+'].[' + @TableName + ']';
BEGIN TRY
EXEC('
DELETE FROM ['+@TableOwner+'].[' + @TableName + ']
DBCC CHECKIDENT ([' + @TableName + '], RESEED, 0)
');
END TRY
BEGIN CATCH
PRINT '=====> can''t FROM ['+@TableOwner+'].[' + @TableName + '], - ' +
CAST(ERROR_NUMBER() AS VARCHAR) + ' - ' + ERROR_MESSAGE();
END CATCH;
END
PRINT '';
PRINT '';
FETCH NEXT FROM DataBaseTables1
INTO @TableOwner,@TableName;
END
CLOSE DataBaseTables1;
DEALLOCATE DataBaseTables1;
PRINT('Loop through all tables and switch all constraints to have a delete rule they had at the beggining of the task')
DECLARE DataBaseTables2 CURSOR FOR
SELECT SCHEMA_NAME(t.schema_id) AS schema_name, t.name AS table_name
FROM sys.tables AS t;
OPEN DataBaseTables2;
FETCH NEXT FROM DataBaseTables2
INTO @TableOwner,@TableName;
WHILE @@FETCH_STATUS = 0
BEGIN
IF (NOT EXISTS(SELECT TOP 1 1 FROM @IgnoreTables WHERE TableName = @TableName))
BEGIN
PRINT '['+@TableOwner+'].[' + @TableName + ']';
DECLARE DataBaseTableRelationships CURSOR FOR
SELECT ForeignKey, ColumnName, ReferenceTableName, ReferenceColumnName, DeleteRule
FROM @AllRelationships
WHERE TableName = @TableName
OPEN DataBaseTableRelationships;
FETCH NEXT FROM DataBaseTableRelationships INTO @ForeignKey, @ColumnName, @ReferenceTableName, @ReferenceColumnName, @DeleteRule;
IF @@FETCH_STATUS 0
PRINT '=====> No Relationships' ;
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @switchBackTo varchar(50) =
CASE
WHEN @DeleteRule = 'NO_ACTION' THEN 'NO ACTION'
WHEN @DeleteRule = 'CASCADE' THEN 'CASCADE'
WHEN @DeleteRule = 'SET_NULL' THEN 'SET NULL'
WHEN @DeleteRule = 'SET_DEFAULT' THEN 'SET DEFAULT'
END
PRINT '=====> switching delete rule on ' + @ForeignKey + ' to ' + @switchBackTo;
BEGIN TRANSACTION
BEGIN TRY
EXEC('
ALTER TABLE ['+@TableOwner+'].[' + @TableName + ']
DROP CONSTRAINT '+@ForeignKey+';
ALTER TABLE ['+@TableOwner+'].[' + @TableName + '] ADD CONSTRAINT
'+@ForeignKey+' FOREIGN KEY
(
'+@ColumnName+'
) REFERENCES '+@ReferenceTableName+'
(
'+@ReferenceColumnName+'
) ON DELETE '+@switchBackTo+'
');
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT '=====> can''t change '+@ForeignKey + ' back to '+ @switchBackTo +', - ' +
CAST(ERROR_NUMBER() AS VARCHAR) + ' - ' + ERROR_MESSAGE();
ROLLBACK TRANSACTION
END CATCH;
FETCH NEXT FROM DataBaseTableRelationships
INTO @ForeignKey, @ColumnName, @ReferenceTableName, @ReferenceColumnName, @DeleteRule;
END;
CLOSE DataBaseTableRelationships;
DEALLOCATE DataBaseTableRelationships;
END
PRINT '';
PRINT '';
FETCH NEXT FROM DataBaseTables2
INTO @TableOwner,@TableName;
END
CLOSE DataBaseTables2;
DEALLOCATE DataBaseTables2;

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









Navicat 데이터베이스 구성 파일이 저장되는 위치는 운영 체제에 따라 다릅니다: Windows: 사용자별 경로는 %APPDATA%\PremiumSoft\Navicat\macOS: 사용자별 경로는 ~/Library/Application Support/Navicat\Linux: 사용자별 경로는 ~/ .config/navicat\입니다. 구성 파일 이름에는 navicat_mysql.ini와 같은 연결 유형이 포함되어 있습니다. 이러한 구성 파일은 데이터베이스 연결 정보, 쿼리 기록 및 SSH 설정을 저장합니다.

Apple의 최신 iOS18, iPadOS18 및 macOS Sequoia 시스템 릴리스에는 사진 애플리케이션에 중요한 기능이 추가되었습니다. 이 기능은 사용자가 다양한 이유로 손실되거나 손상된 사진과 비디오를 쉽게 복구할 수 있도록 설계되었습니다. 새로운 기능에는 사진 앱의 도구 섹션에 '복구됨'이라는 앨범이 도입되었습니다. 이 앨범은 사용자가 기기에 사진 라이브러리에 포함되지 않은 사진이나 비디오를 가지고 있을 때 자동으로 나타납니다. "복구된" 앨범의 출현은 데이터베이스 손상으로 인해 손실된 사진과 비디오, 사진 라이브러리에 올바르게 저장되지 않은 카메라 응용 프로그램 또는 사진 라이브러리를 관리하는 타사 응용 프로그램에 대한 솔루션을 제공합니다. 사용자는 몇 가지 간단한 단계만 거치면 됩니다.

MySQLi를 사용하여 PHP에서 데이터베이스 연결을 설정하는 방법: MySQLi 확장 포함(require_once) 연결 함수 생성(functionconnect_to_db) 연결 함수 호출($conn=connect_to_db()) 쿼리 실행($result=$conn->query()) 닫기 연결( $conn->close())

PHP에서 데이터베이스 연결 오류를 처리하려면 다음 단계를 사용할 수 있습니다. mysqli_connect_errno()를 사용하여 오류 코드를 얻습니다. 오류 메시지를 얻으려면 mysqli_connect_error()를 사용하십시오. 이러한 오류 메시지를 캡처하고 기록하면 데이터베이스 연결 문제를 쉽게 식별하고 해결할 수 있어 애플리케이션이 원활하게 실행될 수 있습니다.

2025 년에 Global Digital Virtual Currency Trading Platform은 2025 년에 트랜잭션 볼륨, 보안 및 사용자 경험과 같은 지표를 기반으로 전 세계 10 대 디지털 가상 통화 거래 플랫폼을 권위있게 발표합니다. OKX는 강력한 기술 강점과 글로벌 운영 전략으로 1 위를 차지했으며 Binance는 높은 유동성과 낮은 수수료와 밀접한 관련이 있습니다. Gate.io, Coinbase 및 Kraken과 같은 플랫폼은 각각의 장점과 함께 최전선에 있습니다. 이 목록에는 Huobi, Kucoin, Bitfinex, Crypto.com 및 Gemini와 같은 거래 플랫폼이 각각 고유 한 특성을 지니고 있지만 투자는 신중해야합니다. 플랫폼을 선택하려면 보안, 유동성, 수수료, 사용자 경험, 통화 선택 및 규제 준수와 같은 요소를 고려해야합니다.

Navicat 연결 URL의 형식은 다음과 같습니다: 프로토콜://사용자 이름:비밀번호@호스트:포트/데이터베이스 이름? 프로토콜, 사용자 이름, 비밀번호, 호스트 이름, 포트, 데이터베이스 이름 및 선택 사항을 포함하여 연결에 필요한 정보를 포함하는 매개변수입니다. 매개변수.

Golang의 데이터베이스 콜백 기능을 사용하면 다음을 달성할 수 있습니다. 지정된 데이터베이스 작업이 완료된 후 사용자 정의 코드를 실행합니다. 추가 코드를 작성하지 않고도 별도의 함수를 통해 사용자 정의 동작을 추가할 수 있습니다. 삽입, 업데이트, 삭제, 쿼리 작업에 콜백 함수를 사용할 수 있습니다. 콜백 함수를 사용하려면 sql.Exec, sql.QueryRow, sql.Query 함수를 사용해야 합니다.

GoWebSocket을 데이터베이스와 통합하는 방법: 데이터베이스 연결 설정: 데이터베이스/sql 패키지를 사용하여 데이터베이스에 연결합니다. WebSocket 메시지를 데이터베이스에 저장: INSERT 문을 사용하여 데이터베이스에 메시지를 삽입합니다. 데이터베이스에서 WebSocket 메시지 검색: SELECT 문을 사용하여 데이터베이스에서 메시지를 검색합니다.
