2020年2月15日 星期六

[MSSQL]批次刪除table資料

資料來源:https://blog.miniasp.com/post/2007/11/16/SQL-Tips-Delete-All-Data-in-whole-Database

select
    distinct 表格名稱
    into #LISTTABLES
from
    (
    SELECT
        Top 100 PERCENT
        a.TABLE_NAME as 表格名稱
    FROM
        INFORMATION_SCHEMA.TABLES  a
        LEFT JOIN INFORMATION_SCHEMA.COLUMNS b ON ( a.TABLE_NAME=b.TABLE_NAME )
    WHERE
        a.TABLE_TYPE='BASE TABLE'
        and a.TABLE_NAME not in ('sysdiagrams','spt_fallback_db','MSreplication_options','spt_fallback_dev','spt_fallback_usg','spt_monitor')
    ORDER BY
        a.TABLE_NAME, ordinal_position) c;

declare
    @tablename nvarchar(max)

declare icur cursor static for select * from #LISTTABLES
 
OPEN icur

fetch next from icur into @tablename
while(@@FETCH_STATUS=0)
BEGIN


    -- 使用 TRUNCATE 最快,且會將表格中的自動編號欄位歸零
    -- 但若表格有被參考 Foreign Key 的話,會無法使用 TRUNCATE 指令
    exec ('TRUNCATE TABLE ' + @tablename); 

    -- 如果 TRUNCATE 不成功,還可以用 DELETE 刪除所有資料
    exec ('delete from ' + @tablename + ' where 1=1');

    -- 使用 DELETE 不會將自動編號的欄位歸零,使用 DBCC CHECKIDENT 指令歸零
    exec ('DBCC CHECKIDENT(''' + @tablename + ''', RESEED, 0)');

    FETCH NEXT FROM icur INTO @tablename
END

close icur
deallocate icur

drop table #LISTTABLES

2020年2月7日 星期五

wmic指令移除程式

移除程式
1.cmd命令提示字元
2.指令:wmic product where "name like '%%SQL Server 2017%%'"
3.列出清單
4.指令:msiexec  /x{IdentifyingNumber}
5.windows 反安裝

2019年11月28日 星期四

shell script 判斷grep字串是否有值

cat testfile.txt | grep -q 'JAMES'
if [ $? -ne 0 ]       #$?=0表示有找到值,1表示未找到, 2表示命令執行錯誤. ne=not eq
then
      echo "not find JAMES"
else
      echo "find JAMES"
fi

2019年11月5日 星期二

[PostgreSQL]TABLE LOCK查詢/解除

SELECT t.schemaname,
    t.relname,
    l.locktype,
    l.page,
    l.virtualtransaction,
    l.pid,
    l.mode,
    l.granted
   FROM pg_locks l
   JOIN pg_stat_all_tables t ON l.relation = t.relid
  WHERE t.schemaname <> 'pg_toast'::name AND t.schemaname <> 'pg_catalog'::name
  ORDER BY t.schemaname, t.relname;


  SELECT pg_cancel_backend('PID');

2019年7月23日 星期二

[PostgreSQL]取欄位型態名稱

select column_name, data_type, character_maximum_length from information_schema.columns
where
 table_schema='public'
 and table_name = 'table_name'

2019年3月8日 星期五

[MS SQL]SQL Server驗證登入


來源:
https://awei791129.pixnet.net/blog/post/20653040-%5Bms-sql%5D-sql-server%E7%84%A1%E6%B3%95sa%E7%99%BB%E5%85%A5
https://docs.microsoft.com/zh-tw/sql/database-engine/configure-windows/change-server-authentication-mode?view=sql-server-2017
使用sa登入

變更安全性驗證模式

  1. 在 Transact-SQL 的物件總管中,以滑鼠右鍵按一下伺服器,然後按一下 [屬性]。
  2. 在 [安全性] 頁面上的 [伺服器驗證] 中,選取新的伺服器驗證模式,然後按一下 [確定]
  3. 在 Transact-SQL 對話方塊中,按一下 [確定] 以確認需要重新啟動 [SQL Server]
  4. 在物件總管中,以滑鼠右鍵按一下伺服器,然後按一下 [重新啟動]。 如果 [SQL Server] Agent 正在執行,也必須將它重新啟動。

若要啟用 sa 登入

  1. 在物件總管中,依序展開 [安全性] 和 [登入],並以滑鼠右鍵按一下 [sa],然後按一下 [屬性]。
  2. 在 [一般] 頁面上,您可能需要為登入建立並確認密碼。
  3. 在 [狀態] 頁面的 [登入] 區段中按一下 [已啟用],然後按一下 [確定]

但是,你如果現在重新連線的話, 也是無法用sa登入的,你必須要去重新啟動SQLEXPRESS才行,很多人會在這裡失敗,到網路上發問

控制台\系統管理工具\服務, 找SQL Server (SQLEXPRESS), 將這個服務重新啟動之後就可以使用sa登入了
PS. 在重新啟動SQL Server (SQLEXPRESS)服務時,請確定SSMS(Microsoft SQL Server Management Studio Express)是關閉的