Kiến tha lâu đầy tổ

Các kiến thức được tích lũy theo thời gian. Hãy kiên trì và chăm chỉ.

Tổng hợp kiến thức kỹ năng công nghệ học được

Các nội dung đang được tích lũy và bổ sung thêm theo thời gian

Tin học văn phòng

Tổng hợp các kỹ năng tin học văn phòng hỗ trợ trong công việc như Word - Excel - Power Point

Kiến thức về cơ sở dữ liệu

Thao tác với cơ sở dữ liệu, ngôn ngữ SQL trên SQL Server và MySQL

Kiến thức cơ bản về lập trình Web

Một số khái niệm cơ bản về lập trình web

Thứ Bảy, 4 tháng 1, 2014

Lỗi không: tạo được sơ đồ (Diagrams) khi Import Data trong SQL

Trong một vài trường hợp khi bạn tạo cơ sở dữ liệu ở một máy khác, hoặc tạo cơ sở dữ liệu SQL trong C#. Khi bạn Import vào trình quản lý SQL Management không xem được sơ đồ thực thể liên kết. Khi bạn click vào database hiện thị thông báo sau.

TITLE: Microsoft SQL Server Management Studio
------------------------------
Database diagram support objects cannot be installed because this database does not have a valid owner. To continue, first use the Files page of the Database Properties dialog box or the ALTER AUTHORIZATION statement to set the database owner to a valid login, then add the database diagram support objects.
------------------------------
BUTTONS:
OK



Trong trường hợp này nguyên nhân lỗi gây ra là do cơ sở dữ liệu chưa được chọn người dùng có quyền để thao tác. Để thực hiện được tạo sơ đồ liên kết ta làm như sau.

Click chuột phải vào cơ sở dữ liệu cần tạo. Nháy vào Properties. Như hình dưới đây
Hình 1
Hộp thoại Database Properties hiện lên ( Cửa sổ bên trái) Click chuột vào File. Giao diện bên phải hiện lên. Mục Owner bên phải click chuột vào dấu ...


Hình 2
Hộp thoại Select Database Owern hiện lên. Nháy vào Browse ...

Hình 3
 Hộp thoại Browse for Objects hiện lên. Bạn chọn một tài khoản bất kỳ ví dụ tôi chọn tài khoản Login là sa như hình dưới đây. Sau đó nhấp OK
Hình 4
Sau đó nhấp vào OK.

Hình 5



Hình 6
OK và kết quả bạn xem lại được sơ đồ liên kết như hình dưới đây


Hình 7
Chúc các bạn thành công!

Thứ Sáu, 3 tháng 1, 2014

Hướng dẫn generate script database trong SQL Server và cách tạo lại database từ scritpt đã có

1. Hướng dẫn generate script một database trong Sql Server 2012.
Bước 1: Đăng nhập vào Sql server.
Bước 2: Trong danh sách database hiện ra ở cột bên trái, chuột phải vào database cần generate chọn Task -> Generate Script…

Bước 3: Trong form mới hiện lên các bạn ấn Next:

Bước 4: ở bước này chúng ta sẽ lựa chọn các đối tượng trong database muốn generate ra script.
Có 2 lựa chọn:
- Script entire database and all database objects: sao lưu toàn bộ database.
- Select specific database objects: lựa chọn các đối tượng cần sao lưu trong database.

Nhấn Next để tiếp tục.
Bước 5: trong bước này, mặc định của Sql là sẽ generate cho bạn một database không có dữ liệu và phiên bản khi generate sẽ là phiên bản sql bạn đang dùng.
Để thay đổi thiếp lập mặc định này ta làm như sau:
- Chọn advanced

- Trong khung opition , các bạn tìm đến 2 phần sau:
Script for server version: lựa chọn phiên bản để generate.
Lưu ý: Các phiên bản sql cũ hơn phiên bản bạn chọn để Generate sẽ ko thể chạy được file script này.

Types of data to script: chọn schema and data để lưu cả dữ liệu của database

Nhấn Ok để Quay về form Script Opition
Trong phần file name bạn có thể chọn đường dẫn và tên file

Nhấn Next
Bước 6 : Nhấn Next và đợi chương trình chạy xong.

Cuối cùng nhấn finish

2. Hướng dẫn tạo lại một database từ một file script có sẵn trong Sql Server 2012
2.1. Khi bạn đã có 1 file script ( .sql) thì việc tạo lại database rất đơn giản.
Bước 1: bạn mở file script lên bằng sql server

Bước 2: sửa lại đường dẫn cho phù hợp với đường dẫn trong máy tính của bạn:

Bước 3: Thực hiện execute để insert dữ liệu vào database
Lưu ý: phiên bản Sql Server dùng để chạy script phải bằng hoặc cao hơn phiên bản sql của file script đó.
2.2. Một số lỗi có thể gặp phải khi tạo lại database từ file script
2.2.1. Msg 1801, Level 16, State 3, Line. Database 'Vinabook' already exists. Choose a different database name.

Lỗi trên xảy ra khi bạn cố tạo một database đã tồn tại trong sql server. Để có thể tạo lại bạn phải xóa database cũ đi.
2.2.2. Msg 5133, Level 16, State 1 … Directory lookup for the file
Lỗi trên xảy ra do đường dẫn lưu file mdf và ldf của bạn không đúng.

Thứ Năm, 2 tháng 1, 2014

Hướng dẫn Attach và Detach database trong Sql Server 2012

Hướng dẫn Attach và Detach database trong Sql Server 2012
1. Cách Attach database trong SQL Server 2005
Đầu tiên, các bạn khởi động Microsoft SQL Server Management Studio, connect vào server.
Trong cây bên trái, click phải lên Mục Database -> Chọn Attach

Trong cửa sổ tiếp theo, nhấn Add

Tìm đến thư mục chứa file .mdf và .ldf (lưu ý 2 file này phải để cùng thư mục). Chọn file .mdf, xong nhấn OK

Trở lại cửa sổ Attach, lúc này thông tin của database đã được thể hiện
Ở đây các bạn có thể gõ lại tên database tại ô "Attach As".
Xong nhấn OK. Chúc các bạn thành công.

2. Cách Detach database trong SQL Server 2005
Đầu tiên, các bạn khởi động Microsoft SQL Server Management Studio, connect vào server.
Trong cây bên trái, trong Mục Database , chuột phải vào database cần Detach -> Tasks -> Detach…

Trong cửa sổ tiếp theo, Check vào ô Drop Connections (để ngắt toàn bộ kết nối đến database này) -> Nhấn OK
 

Attach cơ sở dữ liệu trong Microsoft SQL Server 2008

Trong SQL Server 7.0, Microsoft đã giới thiệu hai thủ tục lưu trữ hệ thống là sp_attach_db và sp_attach_single_file_db, giúp các nhà quản trị cơ sở dữ liệu thuận tiện hơn khi thực hiện các tác vụ sau:
  • Attach trực tiếp các file .MDF và .LDF vào máy chủ bằng cách sử dụng thủ tục lưu trữ hệ thống sp_attach_db.
  • Chỉ Attach các file .MDF bằng cách sử dụng thủ tục lưu trữ hệ thống sp_attach_single_file_db.
  • Detach cơ sở dữ liệu khỏi máy chủ bằng cách sử dụng sp_detach_db. Copy các file .MDF tới máy chủ khác rồi sau đó attach lại vào cả hai máy chủ bằng cách sử dụng thủ tục lưu trữ hệ thống sp_attach_db.
Mặc dù cả hai thủ tục này đều hữu ích với các chuyên viên quản trị cơ sở dữ liệu, thế nhưng vẫn có những hạn chế nhất định, đó là:
  • Bạn không thể attach nhiều file log
  • Bạn không thể attach nhiều hơn 16 file
Trong phiên bản SQL Server 2008, Microsoft công bố rằng các thủ tục lưu trữ hệ thống trên sẽ bị “bỏ xó”. Thay vào đó, Microsoft bổ sung mệnh đề “For Attach” trong câu lệnh “Create Database” của SQL.
Bài viết này sẽ minh họa các phương pháp sử dụng khác nhau của mệnh đề “For Attach” nhằm vượt qua những điểm hạn chế gặp phải khi sử dụng sp_attach_db và sp_attach_single_file_db.
Giả dụ chúng ta có cơ sở dữ liệu “MyDB1” với một file .MDF và một file .LDF tại vị trí 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database DataData File for Monthly ArchiveMicrosoft SQL Server 2008 Data File'. Khởi tạo cơ sở dữ liệu bằng cách sử dụng đoạn mã Transact SQL sau đây.
Use Master
go
CREATE DATABASE MyDB1
ON
( NAME = MyDB1_dat,
    FILENAME = 'C:Program Files
             Microsoft SQL ServerMSSQL10.SQL2008MSSQLDATA
             Summary Database DataData File for Monthly Archive
             Microsoft SQL Server 2008 Data FileMyDB1.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
LOG ON
( NAME = MyDB1_log,
    FILENAME = 'C:Program Files
             Microsoft SQL ServerMSSQL10.SQL2008MSSQLDATA
             Summary Database DataData File for Monthly Archive
             Microsoft SQL Server 2008 Data FileMyDB1.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB )
GO
Bây giờ hãy thử detach cơ sở dữ liệu này và attach lại bằng cách sử dụng sp_detach_db và sp_attach_db. Chạy đoạn mã T-SQL sau đây:
use master
go
sp_detach_db 'MyDB1'
go

sp_attach_db 'MyDb1',
'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
           Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf',
'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
           Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf'
GO
Bạn có thể attach cơ sở dữ liệu trên bằng cách sử dụng lệnh “Create database” với mệnh đề “For Attach” như sau:
use master
go
sp_detach_db 'MyDB1'
go

CREATE DATABASE MyDB1
ON
(
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
            Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf'
),
(
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
            Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf'
) for Attach

go
Bây giờ hãy detach cơ sở dữ liệu MyDB1 sau đó xóa file .LDF, tiếp theo attach lại sử dụng thủ tục lưu trữ hệ thống sp_attach_single_file_db bằng cách thực thi đoạn mã T-SQL sau:
use master
go
sp_detach_db 'MyDB1'
go
exec master..xp_cmdshell 'del "C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
             Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf"'
go
Lưu ý: Trong đoạn mã trên tôi sử dụng xp_cmdshell để xóa file .LDF. Bạn sẽ nhận thông báo lỗi sau đây nếu xp_cmdshell chưa được kích hoạt:
Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1
SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', see "Surface Area Configuration" in SQL Server Books Online.
Bạn có thể kích hoạt xp_cmdshell bằng cách dùng đoạn mã T-SQL sau:
use master
go
sp_configure 'show advanced options',1
go
reconfigure with override
go
sp_configure 'xp_cmdshell',1
go
reconfigure with override
go
Ngoài ra, bạn có thể xóa file .LDF bằng cách dùng lệnh “Del” từ dấu nhắc lệnh MS-DOS.
Bây giờ hãy attach riêng file .MDF bằng cách sử dụng sp_attach_single_file_db. Chạy câu lệnh sau đây:
use master
go
sp_attach_single_file_db 'MyDB1',
'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
           Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf'
go
Kết quả

File activation failure. The physical file name
           "C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
              Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf" may be incorrect.
New log file 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
              Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.LDF' was created.
Bạn có thể attach riêng file .MDF của cơ sở dữ liệu trên bằng cách sử dụng lệnh “Create database” với mệnh đề “For ATTACH_REBUILD_LOG” như sau:
use master
go
sp_detach_db 'MyDB1'
go
exec master..xp_cmdshell 'del
            "C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
             Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.ldf"'
go
Lưu ý: Khi file log được tạo lại, SQL Server tự động thêm hậu tố “_log” vào tên file.
CREATE DATABASE MyDB1
ON
(
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
            Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf'
) for ATTACH_REBUILD_LOG
Kết quả:

File activation failure. The physical file name "C:Program FilesMicrosoft SQL Server
         MSSQL10.SQL2008MSSQLDATASummary Database DataData File for
         Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.LDF" may be incorrect.
New log file 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database
         DataData File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.LDF' was created.
Kết luận
Bài viết trên đã minh họa cách sử dụng câu lệnh “Create Database” với mệnh đề “For Attach” và “for ATTACH_REBUILD_LOG” đối với một file .MDF đơn và một file .LDF đơn. Trong bài viết tiếp theo, các bạn sẽ được giới thiệu cách làm việc với nhiều file .MDF và .LDF.

Thứ Năm, 21 tháng 11, 2013

21 câu lệnh Linux phải nhớ

Đây là những câu lệnh căn bản bất cứ ai muốn tìm hiểu về Linux cần phải nhớ.
  1. clear: làm sạch cửa sổ dòng lệnh
  2. ls tenthumuc: Liệt kê nội dung bên trong một thư mục
  3. cat tentaptin: Hiển thị nội dung của một tập tin lên cửa sổ dòng lệnh
  4. rm tentaptin: Xóa một tập tin
  5. cp taptinnguon taptindich: Sao chép một tập tin
  6. passwd: Đổi mật khẩu
  7. less tentaptin hoặc more tentaptin: Hiển thị nội dung một tập tin trong cửa sổ dòng lệnh một trang mỗi lần
  8. grep chuoi tentaptin: Tìm kiếm chuỗi trong tập tin
  9. head tentaptin: Hiển thị 10 dòng đầu tiên của tập tin
  10. tail tentaptin: Hiển thị 10 dòng cuối cùng của tập tin
  11. mv tentaptincu tentaptinmoi: Di chuyển hoặc đổi tên tập tin
  12. file tentaptin: Hiển thị thông tin về nội dung của tập tin
  13. echo chuoi: Sao chép chuỗi tới màn hình dòng lệnh
  14. date: Hiển thị ngày và giờ hiện tại
  15. gzip tentaptin: Nén một tập tin
  16. gunzip tentaptin: Giải nén một tập tin
  17. chmod quyen tentaptin: Thay đổi quyền truy cập tập tin
  18. mkdir tenthumuc: Tạo một thư mục
  19. rmdir tenthumuc: Xóa một thư mục rỗng
  20. ln existingfile new-link: Tạo một đường dẫn tới một tập tin (liên kết cứng)
  21. top: Hiển thị danh sách các tiến trình đang chạy

Thứ Tư, 20 tháng 11, 2013

Các câu lệnh MySQL cần phải biết

Khi chạy các lệnh này, bạn cần login vào MySQL với tài khoản root (MySQL root chứ không phải tài khoản root quản lý VPS) hoặc tài khoản có full quyền. Tất cả các thao tác mình thực hiện trên VPS CentOS
Đăng nhập MySQL bạn dùng lệnh: mysql -u root -p

1. Thư mục chứa database

Trên CentOS, toàn bộ file raw database được lưu trong thư mục /var/lib/mysql

2. Quản lý tài khoản và phân quyền

Hiển thị toàn bộ users:
mysql> SELECT * FROM mysql.user;

Xóa null user:
mysql> DELETE FROM mysql.user WHERE user = ' ';

Xóa tất cả user mà không phải root:
mysql> DELETE FROM mysql.user WHERE NOT (host="localhost" AND user="root");

Đổi tên tài khoản root (giúp bảo mật):
mysql> UPDATE mysql.user SET user="mydbadmin" WHERE user="root";

Gán full quyền cho một user mới:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'mypass' WITH GRANT OPTION;

Phân quyền chi tiết cho một user mới:
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON mydatabase.* TO 'username'@'localhost' IDENTIFIED BY 'mypass';

Gán full quyền cho một user mới trên một database nhất định:
mysql> GRANT ALL PRIVILEGES ON mydatabase.* TO 'username'@'localhost' IDENTIFIED BY 'mypass' WITH GRANT OPTION;

Thay đổi mật khẩu user:
mysql> UPDATE mysql.user SET password=PASSWORD("newpass") WHERE User='username';

Xóa user:
mysql> DELETE FROM mysql.user WHERE user="username";

3. Các thao tác database

Hiển thị toàn bộ databases:
mysql> SHOW DATABASES;
Tạo database:
mysql> CREATE DATABASE mydatabase;

Sử dụng một database:
mysql> USE mydatabase;

Xóa một database:
mysql> DROP DATABASE mydatabase;

Tối ưu database:
All Databases:
$ sudo mysqlcheck -o --all-databases -u root -p
Single Database:
$ sudo mysqlcheck -o db_schema_name -u root -p

4. Các thao tác table

Tất cả các thao tác bên dưới bạn phải lựa chọn trước database bằng cách dùng lệnh: mysql> USE mydatabase;
Hiển thị toàn bộ table:
mysql> SHOW TABLES;

Hiển thị dữ liệu của table:
mysql> SELECT * FROM tablename;

Đổi tên table :
mysql> RENAME TABLE first TO second;
hoặc
mysql> ALTER TABLE mytable rename as mynewtable;

Xóa table:
mysql> DROP TABLE mytable;

5. Các thao tác cột và hàng

Tất cả các thao tác bên dưới bạn phải lựa chọn trước database bằng cách dùng lệnh: mysql> USE mydatabase;
Hiển thị các column trong table:
mysql> DESC mytable;
hoặc
mysql> SHOW COLUMNS FROM mytable;

Đổi tên column:
mysql> UPDATE mytable SET mycolumn="newinfo" WHERE mycolumn="oldinfo";

Select dữ liệu:
mysql> SELECT * FROM mytable WHERE mycolumn='mydata' ORDER BY mycolumn2;

Insert dữ liệu vào table:
mysql> INSERT INTO mytable VALUES('column1data','column2data','column3data','column4data','column5data','column6data','column7data','column8data','column9data');

Xóa dữ liệu trong table:
mysql> DELETE FROM mytable WHERE mycolumn="mydata";

Cập nhật dữ liệu trong table:
mysql> UPDATE mytable SET column1="mydata" WHERE column2="mydata";

6. Các thao tác sao lưu và phục hồi

Sao lưu toàn bộ database bằng lệnh (chú ý không có khoảng trắng giữa -p và mật khẩu):
mysqldump -u root -pmypass --all-databases > alldatabases.sql

Sao lưu một database bất kỳ:
mysqldump -u username -pmypass databasename > database.sql

Khôi phục toàn bộ database bằng lệnh:
mysql -u username -pmypass < alldatabases.sql (no space in between -p and mypass)

Khôi phục một database bất kỳ:
mysql -u username -pmypass databasename < database.sql

Chỉ sao lưu cấu trúc database:
mysqldump --no-data --databases databasename > structurebackup.sql

Chỉ sao lưu cấu trúc nhiều database:
mysqldump --no-data --databases databasename1 databasename2 databasename3 > structurebackup.sql

Sao lưu một số table nhất định:
mysqldump --add-drop-table -u username -pmypass databasename table_1 table_2 > databasebackup.sql

Chủ Nhật, 17 tháng 11, 2013

Reset MySQL root password

Trong trường hợp bạn quên mất mật khẩu root MySQL, hãy thực hiện theo các bước sau để reset lại mật khẩu này.
Stop MySQL service
sudo /etc/init.d/mysql stop
Start mysqld
sudo mysqld --skip-grant-tables &
Đăng nhập mysql dưới quyền root:
mysql -u root mysql
Thay thế your_new_password bằng mật khẩu mới:
UPDATE user SET Password=PASSWORD('your_new_password') WHERE User='root'; FLUSH PRIVILEGES; exit;
Các thao tác trên CentOS cũng tương tự.